Evolution de l'API Win32 [fermé]

11

L'API Windows 32 a-t-elle beaucoup changé au fil du temps? Le livre de Charles Petzold "Programming Windows, 5th Edition" de 1998 contient-il toujours des informations pertinentes, ou la plupart sont-elles obsolètes / obsolètes?

Quels sont quelques exemples importants d'ajouts récents à l'API Windows 32 (s'il y en a)?

fredoverflow
la source

Réponses:

4

La nouvelle API Thread Pool dans Windows Vista est une amélioration sérieuse et une aide à plusieurs programmes de threads bien écrits, pour un exemple simple de l'évolution de WinAPI. Cependant, la nécessité de maintenir la compatibilité a été un facteur déterminant pour garder les bases de l'API Windows les mêmes et a entraîné des choses non idéales, comme la prédominance des fonctions Ex comme CreateWindowEx. Il existe encore des fonctions compilables contre Windows 64 bits qui sont pour la compatibilité avec les programmes 16 bits.

Ce livre sera toujours utile si vous voulez écrire des programmes basés sur WinAPI qui exécutent des fonctions qui étaient courantes en 1998, car il est peu probable que l'API ait changé. Bien sûr, les meilleures pratiques dans la langue d'origine peuvent bien être avancées, surtout si le livre est écrit pour C ou C ++, car un livre de 1998 a presque certainement été écrit contre C ++ pré-standard.

En outre, la référence correcte est l'API Windows, pas l'API Windows 32, car la même API régit à la fois Windows 32 et Windows 64.

DeadMG
la source
3

J'ai trouvé que la programmation de Windows était toujours utile. Grâce à l'accent mis par Microsoft sur la compatibilité descendante, tous les éléments essentiels (poignées de fenêtre, messages, GDI, etc.) semblent toujours pertinents et sont bien couverts dans Petzold. (Si quelque chose changeait trop radicalement, cela casserait trop de programmes Windows existants, et le grand nombre de programmes Windows existants est une grande partie de l'avantage de Windows sur le marché.)

Il existe de nouvelles API spécifiques, telles que l' API de configuration , l' API Thread Pool et GDI + , ainsi que de nouveaux sujets tels que le travail dans le contexte de l'UAC de Vista et 7. Il existe également plusieurs nouvelles fonctions individuelles que Petzold ne couvre pas, mais il est assez facile de rechercher des sujets plus récents sur MSDN selon les besoins. La programmation de Windows ne couvre pas non plus COM, qui peut être une grande partie de la programmation de Windows.

Gardez à l'esprit que l'API que Petzold couvre est de bas niveau et basée sur C. (Il existe quelques API plus récentes, comme GDI + et certains éléments COM, qui sont orientées objet.) Pratiquement tout développement moderne sera orienté objet et utilisera souvent un cadre comme .NET ou Qt ou la VCL de Delphi, donc vous vais rarement écrire des applications complètes qui ressemblent à l'exemple de code dans la programmation Windows ; cependant, c'est toujours bien pour expliquer ce qui se passe sous le capot.

J'ai regardé autour il y a quelque temps et je n'ai pas trouvé de références d'API plus récentes. Je soupçonne que cela est dû à la taille des API Windows actuelles; La programmation de Windows, 5e édition fait déjà près de 1500 pages, un livre qui couvrirait quelque chose de nouveau serait trop énorme. J'ai trouvé quelques suppléments intéressants à la programmation de Windows , bien que je ne les ai pas encore lus:

  • COM essentiel , par Don Box - Plusieurs des nouvelles API de Vista sont basées sur COM, et Petzold ne couvre pas COM.
  • La programmation système Windows , par Johnson M. Hart - semble ignorer entièrement les éléments GUI et GDI que Petzold couvre si bien, mais il contient beaucoup plus de détails sur les approches modernes: le multithreading, l'IPC, etc.
  • Windows Internals , par Russonovich, Solomon et Ionescu - moins sur les API et plus sur le fonctionnement de Windows sous le capot. Russonovich en sait peut-être plus à ce sujet que quiconque à l'intérieur ou à l'extérieur de Microsoft.
Josh Kelley
la source
0

L'API Windows a changé au fil des ans. Il a ajouté des ensembles de fonctions entièrement nouveaux (ex: TaskDialog et famille) et des remplacements pour les fonctions existantes (ex: CreateWindowEx ).

Je recommanderais de consulter une référence plus récente.

Powerlord
la source
Vous avez des suggestions?
gablin
Malheureusement, non ... je ne suis pas vraiment un programmeur C / C ++ / WinAPI. Je connais simplement l'existence de ces nouvelles fonctions.
Powerlord
Vous voulez dire qu'un OS de 20 ans a ajouté de nouvelles fonctions au cours de cette période?! mind = blown
MarcusJ
0

Le Planificateur de tâches est également nouveau, de nombreux nouveaux objets et interfaces ont été ajoutés. Avant Task Scheduler 2.0, il y avait environ 5 objets impliqués dans la planification des tâches. En 2.0 (introduit lors de la sortie de Vista), il y en a 20, sans blague, 20. C'est l'un des aspects les moins intéressants de la programmation Win32 mais ce n'est pas si mal.

J'adore la programmation dans Win32, vous en apprendrez tellement sur le fonctionnement de Windows et d'autres systèmes d'exploitation à un niveau inférieur et cela fait de vous un meilleur programmeur, je crois. Si vous programmez en python, vous ne savez pas comment les répertoires sont organisés, utilisez simplement os.listdir(""). Mais lorsque vous utilisez FindFirstFile()& FindNextFiledans win32, vous découvrez comment les répertoires sont organisés, découvrez les ".." & "." Cachés. répertoires et à partir de cela peuvent proposer des moyens plus efficaces pour cataloguer et rechercher des répertoires.

Pour les ressources win32, accédez à http://groups.google.com/group/comp.os.ms-windows.programmer.win32/topics

user14321
la source