| auteurs : Aurélien Regat-Barrel, Luc Hermitte |
Le C++ standard ne permet pas de créer une interface graphique. Cela a déjà été discuté, doit probablement l'être encore et le sera encore longtemps. Il faut pour cela utiliser une des très nombreuses bibliothèques spécialisées existantes. Les plus courantes sont :
- les MFC de Microsoft, pour Windows et destinée à être utilisée avec Visual C++.
- la VCL de Borland, pour Windows et destinée à être utilisée avec C++ Builder.
- Qt de Nokia, pour Linux/UNIX, Mac OS X, Windows, etc
avec
des licenses spécifiques (dont certaines libres). Qt dispose
d'une rubrique à part entière : Rubrique Qt.
- wxWidgets, anciennement wxWindows open source, pour Linux/UNIX, Mac, Windows (y compris Windows 3.1 et Windows CE), et d'autres encore. Utilisable avec un grand nombre de compilateurs.
Il en existe encore beaucoup d'autres. La The GUI Toolkit, Framework Page en recense une bonne partie, parmi lesquelles les bibliothèques portables et gratuites suivantes sont régulièrement citées :
Ces bibliothèques sont pour la plupart assez anciennes, ce qui est souvent un gage de maturité. Mais la conséquence est qu'elles utilisent finalement assez peu les possibilités du C++, chose qui devient possible depuis assez peu de temps grâce la généralisation de très bons compilateurs. Ainsi, les bibliothèques précédentes utilisent toutes leur propre classe chaîne de caractères au lieu de std::string, leurs propres conteneurs au lieu de ceux de la STL, n'utilisent pas les exceptions, les espaces de noms, ...
D'autres bibliothèques plus récentes ont la réputation d'être écrites de façon plus "moderne". On peut citer à ce titre le Visual Component Framework ou encore gtkmm qui est un wrapper C++ pour la bibliothèque C GTK+. Le revers de la médaille est que ces bibliothèques sont plus difficilement portables.
On fait la distinction entre programmer en C++ standard et utiliser une de ces bibliothèques C++. Cela veut dire que les forums C++ ne sont généralement pas le bon endroit pour poser une question relative à l'une d'entre elles. De même cette FAQ ne traite pas de leur utilisation.
Pour les autres bibliothèques, vous pouvez utiliser le Forum C++. Si personne ne vous répond, orientez-vous vers le site / newsgroup / mailing list dédié au toolkit que vous utilisez. A ce titre on peut citer :
|
| auteurs : Laurent Gomila, Aurélien Regat-Barrel |
Il n'existe malheureusement rien en C++ standard qui ait un rapport avec la gestion d'images, quelque soit leur format. Ainsi pour
charger, sauvegarder, récupérer les dimensions d'une image, faire du dessin ou gérer un quelconque graphisme, il faudra se tourner vers
une bibliothèque externe :
- Le GDI+ (API C++, gère les formats les plus courants, seulement sous Windows).
- OpenIL (bibliothèque C, multiplateforme, gère une vingtaine de formats d'images).
- FreeImage (bibliothèque C++, multiplateforme, gère elle aussi une bonne vingtaine de formats).
- CxImage (classe Windows, gère une dizaine de formats d'images).
- Anti-Grain Geometry (bibliothèque C++ portable pour faire du rendu 2D haute qualité).
- ImageMagick (multilangages, multiplateformes, gère plus de 100 formats d'images).
- CImg (bibliothèque C++ sous forme d'un seul en-tête, multiplateforme, plutôt simple à utiliser).
- ...
- Et bien sûr si vous utilisez un toolkit tel que Qt, les MFC ou encore la VCL, n'oubliez pas que ceux-ci
proposent généralement ces classes pour manipuler facilement les images.
Si vous avez du courage et du temps à perdre vous pouvez aussi construire votre propre gestion des images ; pour y arriver vous aurez
besoin des descriptions des formats, que vous pourrez trouver entre autre sur http://www.wotsit.org.
|
| auteur : Laurent Gomila |
Le C++ ne propose rien pour gérer les dates, ni de base ni dans sa bibliothèque standard. Afin d'effectuer des opérations sur les dates
et les heures, il vous faudra donc au choix :
- Utiliser des fonctions et structures de la bibliothèque standard du C (voir
FAQ C : gestion des dates et heures).
- Utiliser les classes CTime et CTimeSpan si vous développez avec Visual C++ et les MFC (voir
FAQ VC++ : les dates).
- Utiliser les classes TDate et TDateTime si vous développez avec C++ Builder et la VCL (voir
FAQ C++ Builder : gestion du temps).
- Utiliser la bibliothèque boost::date_time si vous souhaitez
garder un code C++ portable.
- Enfin, n'oubliez pas que bon nombre de bibliothèques d'interfaces graphiques (WxWidgets, Qt, ...) proposent également des
classes de gestion du temps.
|
Consultez les autres F.A.Q.
|
|