<?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, 02 Mar 2011 22:17:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<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...etc). Elle est portable mais les applications crées avec ont la particularité d'adopter le "look and feel" (apparence) de la plate-forme sur laquelle elles ont été compilées. Cela est dû au [...]]]></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...etc). Elle est portable mais les applications crées avec ont la particularité d'adopter le "look and feel" (apparence) de la plate-forme sur laquelle elles ont été compilées. Cela est dû au fait qu'en interne, wxWidgets utilise l'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...). Cependant, l'é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'occupe entièrement de l'affichage (le "look and feel" natif de la plate-forme n'est pas forcément respecté).</p>
<p style="text-align: justify;">Cependant, wxWidgets ne se limite pas à permettre la création d'interfaces graphiques, elle est capable de faire beaucoup d'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'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'aide semblable aux CHM de Windows, peut utiliser des ressources au format XML, peut utiliser des bases de données...etc.</p>
<p style="text-align: justify;">Et tout cela est gratuit et portable, pourquoi s'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'est pas livrée pré-compilée; c'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'ai l'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'utiliser la classe wxGLCanvas si l'on veut pouvoir créer une zone OpenGL dans une fenêtre d'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'aller boire un café en attendant, vu que le compilateur met un certain temps à "digérer" 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 "Librairies files" est sélectionné et rajouter le répertoire include lorsque "Include files" 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'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 --with-opengl et --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'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'est qu'une première approche à wxWidgets, normalement devraient suivre d'autres tuts sur les menus, les boutons, les listes...</p>
<p style="text-align: justify;">Comme d'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'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>2213</slash:comments>
		</item>
	</channel>
</rss>

