<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Coder-Studio &#187; wxWidgets</title>
	<atom:link href="http://www.coder-studio.com/blog/tag/wxwidgets/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.coder-studio.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 31 Mar 2010 00:00:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Introduction à wxWidgets</title>
		<link>http://www.coder-studio.com/blog/introduction-a-wxwidgets/</link>
		<comments>http://www.coder-studio.com/blog/introduction-a-wxwidgets/#comments</comments>
		<pubDate>Mon, 08 Aug 2005 16:47:29 +0000</pubDate>
		<dc:creator>Funto</dc:creator>
				<category><![CDATA[C & C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[wxWidgets]]></category>

		<guid isPermaLink="false">http://r19649.ovh.net/cs/blog/?p=123</guid>
		<description><![CDATA[I) Présentation
wxWidgets est une librairie open source dont le but 1er est de permettre de créer des interfaces graphiques pour ses programmes (fenêtres, boutons&#8230;etc). Elle est portable mais les applications crées avec ont la particularité d&#8217;adopter le &#171;&#160;look and feel&#160;&#187; (apparence) de la plate-forme sur laquelle elles ont été compilées. Cela est dû au fait [...]]]></description>
			<content:encoded><![CDATA[<h2>I) Présentation</h2>
<p style="text-align: justify;">wxWidgets est une librairie open source dont le but 1er est de permettre de créer des interfaces graphiques pour ses programmes (fenêtres, boutons&#8230;etc). Elle est portable mais les applications crées avec ont la particularité d&#8217;adopter le &laquo;&nbsp;look and feel&nbsp;&raquo; (apparence) de la plate-forme sur laquelle elles ont été compilées. Cela est dû au fait qu&#8217;en interne, wxWidgets utilise l&#8217;API propre à chaque plate-forme (API Win32 ou juste GDI sous Windows, GTK+, Motif ou directement X11 sous Linux et autres UNIXs, Carbon ou Cocoa sous Mac&#8230;). Cependant, l&#8217;équipe de wxWidgets a également mis sur pied une version spéciale de wxWidgets, wxUniversal, qui compile sous Windows, Linux et certains périphériques embarqués, et qui s&#8217;occupe entièrement de l&#8217;affichage (le &laquo;&nbsp;look and feel&nbsp;&raquo; natif de la plate-forme n&#8217;est pas forcément respecté).</p>
<p style="text-align: justify;">Cependant, wxWidgets ne se limite pas à permettre la création d&#8217;interfaces graphiques, elle est capable de faire beaucoup d&#8217;autres choses; elle possède ses propres classes de tableau, tables de haschage, liste chaînée, elle permet de créer des applications utilisant les sockets (connections réseau), d&#8217;intégrer une zone dédiée à OpenGL dans une fenêtre pour pouvoir faire du dessin en 3D, de faire des manipulations de chaînes grâce à la classe wxString, contient une sous-librairie, wxHTML, qui permet de visualiser une page HTML, possède son propre système d&#8217;aide semblable aux CHM de Windows, peut utiliser des ressources au format XML, peut utiliser des bases de données&#8230;etc.</p>
<p style="text-align: justify;">Et tout cela est gratuit et portable, pourquoi s&#8217;en priver ? <img src='http://www.coder-studio.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-123"></span></p>
<h2>II) Installation</h2>
<p>Quelle que soit la plate-forme choisie, wxWidgets n&#8217;est pas livrée pré-compilée; c&#8217;est à vous de la compiler à partir des sources.</p>
<p>Mais avant de compiler, cherchez le fichier setup.h et modifiez-le si besoin. Ce fichier contient des #defines qui définissent comment la librairie doit être compilée. Personnellement, j&#8217;ai l&#8217;habitude de changer le :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p123code7'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1237"><td class="code" id="p123code7"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// Recommended setting: 1 if you intend to use OpenGL, 0 otherwise</span>
<span style="color: #339900;">#define wxUSE_GLCANVAS</span></pre></td></tr></table></div>

<p>en :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p123code8'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1238"><td class="code" id="p123code8"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// Recommended setting: 1 if you intend to use OpenGL, 0 otherwise</span>
<span style="color: #339900;">#define wxUSE_GLCANVAS</span></pre></td></tr></table></div>

<p style="text-align: justify;">Ce qui permet d&#8217;utiliser la classe wxGLCanvas si l&#8217;on veut pouvoir créer une zone OpenGL dans une fenêtre d&#8217;un programme wxWidgets.</p>
<p style="text-align: justify;">Ensuite, si vous êtes sous Visual C++, il lancez la compilation du projet situé dans le répertoire src. Vous avez le temps d&#8217;aller boire un café en attendant, vu que le compilateur met un certain temps à &laquo;&nbsp;digérer&nbsp;&raquo; la librairie <img src='http://www.coder-studio.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Après, il faut aller dans le menu Tools-&gt;Options-&gt;onglet Directories, rajouter le répertoire lib lorsque &laquo;&nbsp;Librairies files&nbsp;&raquo; est sélectionné et rajouter le répertoire include lorsque &laquo;&nbsp;Include files&nbsp;&raquo; est sélectionné.</p>
<p style="text-align: justify;">Enfin, pour créer un projet, je vous recommande de reprendre un des projets du répertoire samples qui contient de nombreux exemples et de le réutiliser.</p>
<p style="text-align: justify;">Si vous utilisez Dev-C++, vous pouvez trouver <a href="http://michel.weinachter.free.fr/indexfr.html">des DevPacks ici</a> ou compiler vous-mêmes; si vous optez pour cette solution, regardez du côté des makefiles, du fichier configure ou essayez d&#8217;importer le projet Visual C++.</p>
<p style="text-align: justify;">[UPDATE du 23/09/04 : vous pouvez également télécharger un DevPack <a href="http://cfred.free.fr/DevPack/">ICI</a> pour wxWidgets 2.5.2, merci à fredcl <img src='http://www.coder-studio.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  D'ailleurs il me fait remarquer qu'il faut impérativement désinstaller toute version précédente du DevPack avant d'installer celle-ci ^^]</p>
<p>Si vous êtes sous Linux, il faut faire le triplet habituel</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p123code9'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1239"><td class="code" id="p123code9"><pre class="shell" style="font-family:monospace;">./configure
&nbsp;
make
make install</pre></td></tr></table></div>

<p>Mais renseignez-vous avant sur les options que vous pouvez passer au ./configure (notamment &#8211;with-opengl et &#8211;use-gtk2 il me semble, mailez-moi si je me trompe).</p>
<p>Ensuite, pour la compilation en ligne de commande on fait:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p123code10'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12310"><td class="code" id="p123code10"><pre class="shell" style="font-family:monospace;">g++ mon_code.cpp -o mon_executable `wx-config --libs --cflags`</pre></td></tr></table></div>

<h2>III) Premier programme</h2>
<p>Allez c&#8217;est parti, maintenant on code !</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p123code11'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12311"><td class="code" id="p123code11"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// App.h</span>
<span style="color: #339900;">#ifndef APP_H</span>
<span style="color: #339900;">#define APP_H</span>
&nbsp;
<span style="color: #666666;">// Le header principal de wxWidgets</span>
<span style="color: #339900;">#include </span>
&nbsp;
<span style="color: #666666;">// La classe App représente l'application</span>
<span style="color: #0000ff;">class</span> App <span style="color: #008080;">:</span> <span style="color: #0000ff;">public</span> wxApp
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
&nbsp;
   <span style="color: #0000ff;">virtual</span> <span style="color: #0000ff;">bool</span> OnInit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>  <span style="color: #666666;">// OnInit() est l'équivalent du main() classique :</span>
                           <span style="color: #666666;">// c'est là que débute le programme.</span>
&nbsp;
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #339900;">#endif // APP_H</span></pre></td></tr></table></div>


<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p123code12'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12312"><td class="code" id="p123code12"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// App.cpp</span>
<span style="color: #339900;">#include &quot;App.h&quot;</span>
&nbsp;
<span style="color: #666666;">// Cette macro crée l'objet global de type App qui représente l'application.</span>
IMPLEMENT_APP<span style="color: #008000;">&#40;</span>App<span style="color: #008000;">&#41;</span>
&nbsp;
<span style="color: #666666;">// Equivalent de main()</span>
<span style="color: #0000ff;">bool</span> App<span style="color: #008080;">::</span><span style="color: #007788;">OnInit</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
   <span style="color: #666666;">// On crée une nouvelle wxFrame (une fenêtre), avec new.</span>
   <span style="color: #666666;">// Notez qu'il est inutile d'appeler delete, wxWidgets le fera</span>
   <span style="color: #666666;">// automatiquement :)</span>
   wxFrame<span style="color: #000040;">*</span> frame <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> wxFrame<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">NULL</span>, <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>, <span style="color: #FF0000;">&quot;Hello World !&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
   <span style="color: #666666;">// On centre la fenêtre</span>
   frame<span style="color: #000040;">-</span><span style="color: #000040;">&amp;</span>gt<span style="color: #008080;">;</span>Center<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
   <span style="color: #666666;">// On l'affiche</span>
   frame<span style="color: #000040;">-</span><span style="color: #000040;">&amp;</span>gt<span style="color: #008080;">;</span>Show<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
   <span style="color: #666666;">// On précise à wxWidgets que ce sera la fenêtre principale;</span>
   <span style="color: #666666;">// grâce à cela il pourra détruire (delete) la fenêtre en fin d'application</span>
   <span style="color: #666666;">// et c'est aussi grâce à cela qu'un clic sur la croix ferme le programme</span>
   <span style="color: #666666;">// (et pas seulement la fenêtre).</span>
   this<span style="color: #000040;">-</span><span style="color: #000040;">&amp;</span>gt<span style="color: #008080;">;</span>SetTopWindow<span style="color: #008000;">&#40;</span>frame<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
   <span style="color: #666666;">// Pour finir on renvoie TRUE, ce qui signifie que l'application doit continuer</span>
   <span style="color: #666666;">// (et rentrer dans la boucle d'évènements).</span>
&nbsp;
   <span style="color: #0000ff;">return</span> TRUE<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<h2>IV) Conclusion</h2>
<p style="text-align: justify;">Voilà, ce tutorial n&#8217;est qu&#8217;une première approche à wxWidgets, normalement devraient suivre d&#8217;autres tuts sur les menus, les boutons, les listes&#8230;</p>
<p style="text-align: justify;">Comme d&#8217;habitude, pour toute remarque/critique/suggestion, laissez un message ci-dessous ou mailez-moi à funto66 at gmail.com.</p>
<blockquote>
<p style="text-align: justify;">Cet article provient du tutorial publié par Funto le 08/08/2005 sur l&#8217;ancien site de Coder-Studio.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.coder-studio.com/blog/introduction-a-wxwidgets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
