Note : 4 ; Pas un truc qu’on lit pour le fun !
Les frameworks IHM en C++ ne sont pas mort ! Et ce volume de 540 pages (hors annexes) compte bien nous en faire la preuve avec wxWidgets. Le bestiaux compte 20 chapitres, il faudrait aussi y ajouter presque 100 pages d’annexes.
Les deux premiers chapitres (assez courts) sont là d’une pour nous présenter très brièvement l’historique de wxWidgets, puis un « hello world » qui nous montre déjà une certaine ressemblance avec MFC…
Dès le chapitre 3 on rentre dans le dur avec la gestion des évènements. Je trouve la prose et les explications assez sèches. D’un autre côté, la petite taille des chapitres aide…
En comparaison, le chapitre 4 « Windows basics » fait plutôt mouse costaud avec ses presque 100 pages ! La prose me semble assez décousue et si la présence de nombreux tableaux de référence semble rassurante, elle fait ressembler ce chapitre d’avantage à un manuel de référence qu’à un tutorial.
La partie sur l’écriture sur les devices ressemble plutôt à une introduction sur le sujet. Fort heureusement on a quitté le mode « manuel de référence ». Si les contextes graphiques, arrières plans, etc… semblent décemment traités, j’ai quelques soupçons sur l’affichage de bitmaps, la gestion des imprimantes me paraît un peu légère et la partie 3D est carrément un gag !
Passons sur le chapitres 6 dédié à la gestion des inputs pour arriver aux chapitres 7 et 8 consacrés aux layouts puis aux dialogues standards. Ces deux chapitres sont justes introductifs avec de petits fragments de code pour illustrer les cas courants. En gros, ce que propose le manuel en ligne de wxWidgets. Ce n’est pas le cas du chapitre 9 qui traite les « custom dialogs » et s’appuiera sur un exemple plus conséquent.
Si le traitement des images au chapitre 5 m’avait déçu, le chapitre 10 rattrape le coup en traitant exclusivement de cet aspect.
Le drag and drop est toujours une fonctionnalité complexe, difficile à exposer clairement. C’est le cas ici, avec une approche confuse. Un exemple global appréhendé par morceau aurait aidé, ainsi qu’une explication de la cinématique globale. Suite des aspects avancés avec le chapitre 12 qui traite des différentes classes de fenêtres.
Les chapitres 13 et 14 nous ramènent à l’époque où l’on réinventait l’eau chaude en C++ à chaque librairie ! Voilà donc des objets de base pour gérer chaine de caractères, collections, fichiers, etc… Malheureusement toutes ces choses sont prises en paramètre par les API du framework…
Je passe sur le chapitre 15 qui décrit les facilités de debuggage et de gestion d’erreur et sur le chapitre 16 qui traite l’internationalisation très classiquement par le biais de ressources. Ces deux chapitres sont de toute façon assez courts. Plus intéressant, les chapitres 17 et 18 se focalisent sur des aspects systèmes : les threads et les sockets, prenant en charge ce que ACE fait en cross plateforme par exemple. On aime ou pas, mais wxWidgets permet de traiter ces aspects évènements de ces deux sous-systèmes dans sa boucle d’événement. Personnellement, j’aime pas !
Il est curieux qu’il faille attendre le chapitre 19 pour voir décrit le modèle « document – vue » de wxWidgets ! Il aurait dû être présenté bien avant. Quoi qu’il en soit, les auteurs proposent ici une approche par étape qui tranche un peu sur ce qui est fait par ailleurs dans le livre, et c’est une bonne nouvelle.
L’ouvrage se conclut par un chapitre 20 « perfecting your application » qui est un melting pot de différents sujets sans rapports les uns avec les autres.
Il faut voir les choses en face : il n’y a pas le choix de livres sur wxWidgets. C’est le seul. En terme de ciblage il se cherche un peu. Il voudrait être l’introduction à la programmation avec wxWidgets comme l’était le Petzold pour Windows mais tombe souvent dans le travers du manuel de référence sans en avoir la qualité. Ce n’est pas le Petzold non plus, c’est certain. Bref ce n’est pas un livre que je pourrais conseiller les yeux fermés, mais il n’est pas écrit avec les pieds non plus.
Plutôt vide, avec beaucoup de déclarations d’intention mais peu de concret.
Bref, un livre qui est loin d’être indispensable.

Référence complète : Cross-Platform GUI Programming with wxWidgets – Julian Smart and Kevin Hock with Stefan Csomor – Prentice Hall 2006 – ISBN : 9780131473812