<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>AGUL Dialog question</title>
		<link>http://www.allegro.cc/forums/view/581976</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 28 Apr 2006 01:59:14 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My program uses AGUL for the GUI part, and it draws just fine. What I want it to do, though, is to draw a different dialog when the user&#39;s made a choice, which, when finished, returns to the first dialog again.</p><p>What I got, is that the main dialog appears properly. The user can go to another one just fine, but when that one finishes, it doesn&#39;t clear the dialog and places the main one again, but instead, after pressing Escape, places the main one, parts of it only appearing when you hover the mouse over it.</p><p>Anybody know why this happens? Here&#39;s the code for the main one:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> main_dlg<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>   <span class="c">/* (dialog proc)     (x)   (y)   (w)   (h) (fg)(bg) (key) (flags)     (d1) (d2)    (dp)                   (dp2) (dp3) */</span></td></tr><tr><td class="number">4</td><td>   </td></tr><tr><td class="number">5</td><td>   <span class="c">/* this element just clears the screen, therefore it should come before the others */</span></td></tr><tr><td class="number">6</td><td>   <span class="k2">{</span> d_agup_clear_proc,        <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,  <span class="n">0</span>,    <span class="n">0</span>,      <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,    NULL,                   NULL, NULL  <span class="k2">}</span>,</td></tr><tr><td class="number">7</td><td>   </td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="c">// Add/Edit record</span></td></tr><tr><td class="number">11</td><td>   <span class="k2">{</span> d_agup_edit_proc,     <span class="n">100</span>, <span class="n">75</span>, <span class="n">100</span>,  <span class="n">8</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  LENGTH,   <span class="n">0</span>,  word_1,     NULL,  word_1  <span class="k2">}</span>,</td></tr><tr><td class="number">12</td><td>   <span class="k2">{</span> d_agup_edit_proc,     <span class="n">226</span>, <span class="n">75</span>, <span class="n">100</span>,  <span class="n">8</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  LENGTH,   <span class="n">0</span>,  word_2,     NULL,  word_2  <span class="k2">}</span>,</td></tr><tr><td class="number">13</td><td>   <span class="k2">{</span> d_agup_push_proc,     <span class="n">110</span>, <span class="n">95</span>, <span class="n">100</span>, <span class="n">18</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span><span class="s">"Add"</span>,     <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span>add_to_database <span class="k2">}</span>,</td></tr><tr><td class="number">14</td><td>   <span class="k2">{</span> d_agup_push_proc,     <span class="n">215</span>, <span class="n">95</span>, <span class="n">100</span>, <span class="n">18</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span><span class="s">"Edit"</span>,     <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span>edit <span class="k2">}</span>,</td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="c">// Translate</span></td></tr><tr><td class="number">18</td><td>   <span class="k2">{</span> d_agup_edit_proc,     <span class="n">163</span>, <span class="n">155</span>, <span class="n">100</span>,  <span class="n">8</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  LENGTH,   <span class="n">0</span>,  trans,      NULL,  trans  <span class="k2">}</span>,</td></tr><tr><td class="number">19</td><td>   <span class="k2">{</span> d_agup_push_proc,     <span class="n">163</span>, <span class="n">175</span>, <span class="n">100</span>, <span class="n">18</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span><span class="s">"Translate"</span>,     <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span>translate <span class="k2">}</span>,</td></tr><tr><td class="number">20</td><td>   <span class="k2">{</span> quit_proc,              <span class="n">0</span>,  <span class="n">0</span>,   <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>, <span class="n">27</span>,  <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,       <span class="n">0</span>,        <span class="n">0</span>,  <span class="n">0</span> <span class="k2">}</span>,</td></tr><tr><td class="number">21</td><td>   </td></tr><tr><td class="number">22</td><td>   <span class="c">/* the next two elements don't draw anything */</span></td></tr><tr><td class="number">23</td><td>   <span class="k2">{</span> <a href="http://www.allegro.cc/manual/d_yield_proc" target="_blank"><span class="a">d_yield_proc</span></a>,        <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,  <span class="n">0</span>,    <span class="n">0</span>,      <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,    NULL,                   NULL, NULL  <span class="k2">}</span>,</td></tr><tr><td class="number">24</td><td>   <span class="k2">{</span> NULL,                <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,  <span class="n">0</span>,    <span class="n">0</span>,      <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,    NULL,                   NULL, NULL  <span class="k2">}</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>&#160;</td></tr><tr><td class="number">28</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">29</td><td><span class="k2">{</span></td></tr><tr><td class="number">30</td><td>   <span class="c">/* initialise everything */</span></td></tr><tr><td class="number">31</td><td>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">32</td><td>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>   <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">35</td><td>   <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>   <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>   <span class="c">/* End of initialise everything */</span></td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>   <span class="c">/* Sets graphics mode */</span></td></tr><tr><td class="number">40</td><td>   <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">41</td><td>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_SAFE, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>   <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_TEXT, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>   <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Unable to set any graphic mode\n%s\n"</span>, <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>   <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">47</td><td>   <span class="c">/* End of sets graphics mode */</span></td></tr><tr><td class="number">48</td><td>&#160;</td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>   <span class="c">/* GUI theme + x-button */</span></td></tr><tr><td class="number">51</td><td>   <a href="http://www.allegro.cc/manual/set_close_button_callback" target="_blank"><span class="a">set_close_button_callback</span></a> <span class="k2">(</span>closebutton<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>   agup_init<span class="k2">(</span>agtk_theme<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>   <span class="c">/* End of GUI theme + x-button */</span></td></tr><tr><td class="number">54</td><td>&#160;</td></tr><tr><td class="number">55</td><td>  set_gui<span class="k2">(</span>main_dlg<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>&#160;</td></tr><tr><td class="number">57</td><td>&#160;</td></tr><tr><td class="number">58</td><td>   agup_shutdown <span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td><span class="k2">}</span></td></tr><tr><td class="number">61</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

And here&#39;s the code for the one giving trouble:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> edit<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">2</td><td>  <span class="k1">int</span> answer<span class="k2">;</span></td></tr><tr><td class="number">3</td><td>  answer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/alert" target="_blank"><span class="a">alert</span></a><span class="k2">(</span><span class="s">"Edit record?"</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="s">"&amp;Yes"</span>, <span class="s">"&amp;No"</span>, <span class="s">'y'</span>, <span class="s">'n'</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>  <span class="k1">if</span><span class="k2">(</span>answer <span class="k3">=</span><span class="k3">=</span> <span class="n">1</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">6</td><td>    <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> edit_dlg<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">7</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>      <span class="c">/* (dialog proc)     (x)   (y)   (w)   (h) (fg)(bg) (key) (flags)     (d1) (d2)    (dp)                   (dp2) (dp3) */</span></td></tr><tr><td class="number">9</td><td>   </td></tr><tr><td class="number">10</td><td>      <span class="c">/* this element just clears the screen, therefore it should come before the others */</span></td></tr><tr><td class="number">11</td><td>      <span class="k2">{</span> d_agup_clear_proc,        <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,  <span class="n">0</span>,    <span class="n">0</span>,      <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,    NULL,                   NULL, NULL  <span class="k2">}</span>,</td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>      <span class="c">// Add/Edit record</span></td></tr><tr><td class="number">14</td><td>      <span class="k2">{</span> d_agup_edit_proc,     <span class="n">75</span>, <span class="n">75</span>, <span class="n">100</span>,  <span class="n">8</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  LENGTH,   <span class="n">0</span>,  word_1,     NULL,  word_1  <span class="k2">}</span>,</td></tr><tr><td class="number">15</td><td>      <span class="k2">{</span> d_agup_edit_proc,     <span class="n">200</span>, <span class="n">75</span>, <span class="n">100</span>,  <span class="n">8</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  LENGTH,   <span class="n">0</span>,  new_word_1,     NULL,  new_word_1  <span class="k2">}</span>,</td></tr><tr><td class="number">16</td><td>      <span class="k2">{</span> d_agup_edit_proc,     <span class="n">75</span>, <span class="n">95</span>, <span class="n">100</span>,  <span class="n">8</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  LENGTH,   <span class="n">0</span>,  word_2,     NULL,  word_2  <span class="k2">}</span>,</td></tr><tr><td class="number">17</td><td>      <span class="k2">{</span> d_agup_edit_proc,     <span class="n">200</span>, <span class="n">95</span>, <span class="n">100</span>,  <span class="n">8</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  LENGTH,   <span class="n">0</span>,  new_word_2,     NULL,  new_word_2  <span class="k2">}</span>,</td></tr><tr><td class="number">18</td><td>      <span class="k2">{</span> d_agup_push_proc,     <span class="n">137</span>, <span class="n">115</span>, <span class="n">100</span>, <span class="n">18</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,  <span class="n">0</span>,       <span class="n">0</span>,   <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span><span class="s">"Edit"</span>,     <span class="n">0</span>,  <span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span>edit_record <span class="k2">}</span>,</td></tr><tr><td class="number">19</td><td>    <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>    set_gui<span class="k2">(</span>edit_dlg<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>  <span class="k1">return</span> D_O_K<span class="k2">;</span>   </td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Raf Vermeulen)</author>
		<pubDate>Fri, 28 Apr 2006 01:20:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A dialog is a bit too big to put into the stack. You should probably make it global or static. Also, you&#39;re missing the last NULL entry, so you&#39;re lucky it&#39;s not crashing.</p><p>The problem is, though, that you&#39;re returning D_O_K instead of D_REDRAW. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Fri, 28 Apr 2006 01:45:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Humm... which NULL&#39;m I missing? the D_REDRAW did the trick. Thanks alot <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Now to get rid of the pressing ESC thing and it all works smoothly:)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Raf Vermeulen)</author>
		<pubDate>Fri, 28 Apr 2006 01:50:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>A DIALOG array should end with a NULL proc, just like you have in main_dlg. edit_dlg is missing it and risks overrunning the memory.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Fri, 28 Apr 2006 01:57:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oops:-X It&#39;s added now, along with the yield proc. Thanks for pointing that out.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Raf Vermeulen)</author>
		<pubDate>Fri, 28 Apr 2006 01:59:14 +0000</pubDate>
	</item>
</rss>
