Note : 9 ; Plus qu’un livre : une institution
10 ans après la 1ère édition, cette 4ème (qui ne fut pas la dernière) a encore pris de l’embonpoint pour atteindre 1200 pages. Malgré l’entrée dans le monde 32 bits, cette institution qu’est « le Petzold » reste fidèle à la programmation via les API héritées de Win16. Donc la part belle est faite aux applications fenêtrées : fenêtres, menus, tracés graphiques, impression, boites de dialogue, presse-papiers, etc… Il traite plus succinctement des aspects systèmes et des aspects spécifiques à Win32. Il est temps d’entrée dans le cœur du sujet. On parle de 20 chapitres regroupés en 5 parties.
La première partie comporte 4 chapitres totalisant 270 pages. Le livre ne commence réellement qu’au chapitre 2, qui s’articule autour du redoutable HelloWin.c ! Il faut tout le talent pédagogique de Charles Petzold pour démystifier les arcanes de la boucle d’événement et des handles de fenêtre, afin de donner une logique à l’ensemble. Utiliser le Canvas de fenêtre, l’événement WM_PAINT et autres invalidation de surfaces (sans parler des scroll barres) n’est pas non plus une sinécure, mais le chapitre 3 y vient à bout de manière méthodique. Une bonne base pour aborder la terrible complexité de la GDI au chapitre 4 ! Toutefois, le sujet mérite un livre (au moins) à lui tout seul et celui-ci ne saurait couvrir complètement le sujet…
La seconde partie est consacrée à la saisie. On parle de saisie au sens large : comptez 4 chapitres et 200 pages pour des sujets couvrant bien sûr le clavier et la souris, mais aussi l’horloge et les fenêtres enfant ! On ne se douterai pas au premier abord que la gestion du clavier puisse être si complexe, impliquant des messages clavier, mais aussi de focus de fenêtre, sans compter la prise en compte de paramètres OEM ! Un sujet parfaitement traité en profondeur ici. Heureusement, la gestion de la souris traitée au chapitre 6 génère moins de tracas, même quand on essaie de pousser le sujet dans ses retranchements : souris gérée au clavier, capture de la souris (si, si), etc.. La gestion de l’horloge abordée au chapitre 7 est pour une fois réellement simple sous Windows, peut-être est-ce pour cela que l’auteur a choisi un exemple complexifiant inutilement le sujet en y mettant de la GDI ? Par fenêtre enfants, il faut entendre les contrôles, essentiellement les boutons et la façon dont ils communiquent avec la fenêtre encadrante. Ce chapitre conclue cette partie.
C’est à la gestion des ressources qu’est consacrée la 3ème partie. 4 chapitres et pas loin de 450 pages sont nécessaires pour couvrir ce sujet hélas beaucoup plus compliqué qu’il ne devrait ! Icônes, curseurs et bitmaps que l’on fait figurer dans le fichier .res sont vite balayés au chapitre 9. La gestion des menus est menée de façon plus poussée au chapitre 10, avec quelque cas d’usage non orthodoxes ! Les boites de dialogues sont un sujet très large, allant des boites de messages et des CommonDlg aux boites de dialogues non modales. 90 pages pour couvrir cela de manière progressive et pédagogique ne sont pas de trop. Un sujet qui s’entend sur les 110 pages du chapitre suivant pour couvrir des aspects avancés qui sont une spécificité de cette édition « Windows 95 ». Hélas le sujet est traité avec beaucoup moins de pédagogie, c’est même un peu confus.
La 4ème partie pèse 150 pages et 3 chapitre et est entièrement dévolue aux fonction système. Le chapitre 13, très court donne une impression de bâclé pour traiter la gestion mémoire et des entrées sortie. Le chapitre consacré au multitâche l’est moins, mais on ne peut toutefois le considérer que comme une introduction au sujet. Il ne saurait faire concurrence au texte de Jeffrey Richter. On finit avec la gestion de l’imprimante, un sujet ridiculement compliqué, mais que la prose de l’auteur, encore perfectionnée depuis l’édition précédente, rend abordable.
La dernière partie de l’ouvrage est consacrée aux différents modes d’échange de données. 250 pages sur 5 chapitres leur sont consacrés. 2 chapitres sont consacrés respectivement au presse-papier et au très malcommode DDE. Je m’étonne de le trouver encore là, car son remplaçant (OLE) point le bout de son nez un peu plus loin… L’interface MDI, dont c’était le chant du cygne a encore doit à son chapitre également. Pas de changement non plus pour le chapitre consacré aux DLL, je continue à trouver que la gestion « sans import » n’est pas sérieusement traitée, alors que c’est la seule réellement utile ! Enfin le chapitre 20 nous fait découvrir OLE, nouveauté de cette version. Disons que c’est un chapitre introductif à la question, mais il est plutôt bien fait, eut égard au sujet dont la courbe d’apprentissage est plutôt raide ! Notons aussi que c’est le seul chapitre dont les exemples sont en C++. Bien sûr la couverture du sujet est très loin d’être à la hauteur du Brockschmidt, mais celui-ci n’est pas non plus extraordinairement pédagogique…
Bien sûr, cela semble dépassé de s’intéresser à la programmation Windows aujourd’hui, surtout à aussi bas niveau. Néanmoins, comprendre le fonctionnement d’une interface fenêtrée au niveau de ses fondamentaux n’est pas ridicule. A l’époque où le développement Windows battait son plein, je considère que la connaissance du développement au niveau des API était un savoir fondamental, même à une époque où l’on développe confortablement avec les MFC et des assistants (beurk !). Le Petzold est un modèle de pédagogie, c’est pourquoi j’avais élu l’édition précédente (celle de 1992) « book of the year ».

Référence complète : Programmer sous Windows 95, 4ème édition – Charles Petzold & Paul Yao – Microsoft Press 1996 – ISBN : 2-84082-195-8 (VO : ISBN 1-55615-676-6)