<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Internal workings of GUI? or something easier...</title>
		<link>http://www.allegro.cc/forums/view/579237</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 14 Apr 2006 22:31:37 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello guys, I need your advice again, I&#39;ve got my marvelous GUI made using allegro but my icon array still needs a little tweaking which i have no idea how to do, attached theres a screenshot of the program I&#39;m making. If you check it out you&#39;ll see theres map on the left and array of icons on the right, but if you look closely, you&#39;ll see theres 3 icons pressed, obviously, this wont do for any decent editor. My code for the dialog in question is:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="k1">int</span> my_icon_proc <span class="k2">(</span><span class="k1">int</span> msg, <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> <span class="k3">*</span>d, <span class="k1">int</span> c<span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>   <span class="k1">int</span> ret <span class="k3">=</span> <a href="http://www.allegro.cc/manual/d_icon_proc" target="_blank"><span class="a">d_icon_proc</span></a> <span class="k2">(</span>msg, d, c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>   <span class="k1">if</span> <span class="k2">(</span>msg <span class="k3">=</span><span class="k3">=</span> MSG_CLICK<span class="k2">)</span></td></tr><tr><td class="number">6</td><td>      <span class="k1">return</span> <span class="k2">(</span><span class="k2">(</span><span class="k1">int</span> <span class="k2">(</span><span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">)</span>d-&gt;dp3<span class="k2">)</span><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>   <span class="k1">return</span> ret<span class="k2">;</span></td></tr><tr><td class="number">8</td><td><span class="k2">}</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td> <span class="k1">void</span> iconos<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">12</td><td><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>  <span class="k1">short</span> <span class="k1">int</span> xl <span class="k3">=</span> <span class="n">742</span>, yl <span class="k3">=</span> <span class="n">30</span>, u,ax,ay <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>  </td></tr><tr><td class="number">14</td><td>  the_dialog <span class="k3">=</span> <span class="k1">new</span> <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a><span class="k2">[</span><span class="n">265</span><span class="k2">]</span><span class="k2">;</span> </td></tr><tr><td class="number">15</td><td>  </td></tr><tr><td class="number">16</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.proc <span class="k3">=</span>  my_bitmap_proc<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.x <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.y <span class="k3">=</span>  <span class="n">15</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.w <span class="k3">=</span>  <span class="n">756</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.h <span class="k3">=</span>  <span class="n">711</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.fg <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.bg <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.<a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a> <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.flags <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.d1 <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.d2 <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dp <span class="k3">=</span>  NULL<span class="k2">;</span></td></tr><tr><td class="number">28</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dp2 <span class="k3">=</span>  NULL<span class="k2">;</span></td></tr><tr><td class="number">29</td><td>   the_dialog<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.dp3 <span class="k3">=</span>  <span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span> cambiar_raton<span class="k2">;</span></td></tr><tr><td class="number">30</td><td>   </td></tr><tr><td class="number">31</td><td>   <span class="k1">for</span><span class="k2">(</span>u <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> u <span class="k3">&lt;</span> <span class="n">256</span><span class="k2">;</span> u<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">32</td><td>   <span class="k2">{</span></td></tr><tr><td class="number">33</td><td>       xl <span class="k3">+</span><span class="k3">=</span> <span class="n">32</span><span class="k2">;</span> </td></tr><tr><td class="number">34</td><td>       <span class="k1">if</span> <span class="k2">(</span>xl <span class="k3">&gt;</span><span class="k3">=</span> <span class="n">1024</span><span class="k2">)</span> <span class="k2">{</span> xl<span class="k3">=</span><span class="n">774</span><span class="k2">;</span> yl <span class="k3">+</span><span class="k3">=</span> <span class="n">22</span><span class="k2">;</span> <span class="k2">}</span> </td></tr><tr><td class="number">35</td><td>       </td></tr><tr><td class="number">36</td><td>       que_le_den<span class="k3">&lt;</span>u&gt;<span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">32</span>,<span class="n">32</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">37</td><td>       <a href="http://www.allegro.cc/manual/clear_to_color" target="_blank"><span class="a">clear_to_color</span></a><span class="k2">(</span>que_le_den<span class="k3">&lt;</span>u&gt;,<a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>       </td></tr><tr><td class="number">39</td><td>       ax<span class="k3">=</span><span class="n">32</span><span class="k3">*</span><span class="k2">(</span>u<span class="k3">/</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">40</td><td>       ay<span class="k3">=</span><span class="n">32</span><span class="k3">*</span><span class="k2">(</span>u%<span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>       <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>TILES<span class="k2">]</span>.dat,que_le_den<span class="k3">&lt;</span>u&gt;,ax,ay,<span class="n">0</span>,<span class="n">0</span>,TILESIZE,TILESIZE<span class="k2">)</span><span class="k2">;</span>  </td></tr><tr><td class="number">42</td><td>        </td></tr><tr><td class="number">43</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.proc <span class="k3">=</span> my_icon_proc<span class="k2">;</span> </td></tr><tr><td class="number">44</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.x <span class="k3">=</span> xl<span class="k2">;</span></td></tr><tr><td class="number">45</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.y <span class="k3">=</span> yl<span class="k2">;</span></td></tr><tr><td class="number">46</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.w <span class="k3">=</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.h <span class="k3">=</span> <span class="n">22</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.fg <span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.bg <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> </td></tr><tr><td class="number">50</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.<a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a> <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.flags <span class="k3">=</span>  <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.d1 <span class="k3">=</span>  <span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.d2 <span class="k3">=</span>  <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.dp <span class="k3">=</span> que_le_den<span class="k3">&lt;</span>u&gt;<span class="k2">;</span>    </td></tr><tr><td class="number">55</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.dp2 <span class="k3">=</span>  NULL<span class="k2">;</span></td></tr><tr><td class="number">56</td><td>       the_dialog <span class="k2">[</span>u<span class="k3">+</span><span class="n">1</span><span class="k2">]</span>.dp3 <span class="k3">=</span> <span class="k2">(</span><span class="k1">void</span> <span class="k3">*</span><span class="k2">)</span> iconitos<span class="k2">;</span>     </td></tr><tr><td class="number">57</td><td>   <span class="k2">}</span></td></tr><tr><td class="number">58</td><td>   <span class="c">// Here some more procs of the dialog which arent realy relevant for the matter.</span></td></tr><tr><td class="number">59</td><td>   <span class="k2">}</span></td></tr></tbody></table></div></div><p>

The final idea is for the user to click a icon, then whenever he preses on the map,  the tiles he presses on change to the one selected, and when he presses on another icon, the one he pressed earlier somehow &quot;unpresses&quot;, and the tile that the mouse now draws changes to the one selected.</p><p>The thing is that I have absolutely no idea how to &quot;unpress&quot; a my_icon_proc. As far as I&#39;ve seen none of the dp fields are used for it, iconitos() right now is an empty function which doesn&#39;t do anything and I&#39;m also having difficulty on seeing how I&#39;m going to tell the program which icon its selected if i cant use parameters in the function (which i haven&#39;t been able to do yet)</p><p>If anyone of you guys can tell me how the icon_proc thing works, give me advice on the iconitos function or just any odd thought he might have about what I&#39;m asking, please go ahead.</p><p>[EDIT] Problem solved, everithing works fine now.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jaime barrachina)</author>
		<pubDate>Fri, 14 Apr 2006 22:31:37 +0000</pubDate>
	</item>
</rss>
