Эволюция Win32 API [закрыто]

11

API Windows 32 сильно изменился со временем? Есть ли в книге Чарльза Петцольда «Программирование Windows, 5-е издание» 1998 года соответствующая информация, или она устарела / устарела?

Каковы некоторые яркие примеры недавних дополнений к Windows 32 API (если они есть)?

fredoverflow
источник

Ответы:

4

Новый API пула потоков в Windows Vista - это серьезное улучшение и помощь хорошо написанным многопоточным программам, представляющим простой пример эволюции WinAPI. Тем не менее, необходимость поддерживать совместимость была движущим фактором для сохранения основ Windows API прежним и привела к некоторым неидеальным вещам, таким как преобладание функций Ex, таких как CreateWindowEx. Все еще есть функции, скомпилированные для 64-битных Windows, которые совместимы с 16-битными программами.

Эта книга по-прежнему будет полезна, если вы захотите писать программы на основе WinAPI, которые выполняют функции, которые были распространены в 1998 году, поскольку маловероятно, что API изменился. Конечно, лучшие практики в языке происхождения могут быть впереди, особенно если книга написана для C или C ++, поскольку книга 1998 года почти наверняка была написана против предстандартного C ++.

Кроме того, правильной ссылкой является Windows API, а не Windows 32 API, поскольку один и тот же API управляет как Windows 32, так и Windows 64.

DeadMG
источник
3

Я нашел Программирование Windows все еще полезным. Благодаря акценту Microsoft на обратную совместимость все основные элементы (дескрипторы окон, сообщения, GDI и т. Д.), По-видимому, все еще актуальны и хорошо освещены в Petzold. (Если бы что-то изменилось слишком сильно, это сломало бы слишком много существующих программ Windows, и огромное количество существующих программ Windows - большая часть преимущества Windows на рынке.)

Есть определенные новые API - интерфейсы, такие как настройки API , в пул потоков API , и GDI + , и появляются новые темы , такие как работа в контексте в Vista и 7 в UAC. Есть также несколько отдельных новых функций, которые Petzold не охватывает, но достаточно просто искать новые темы в MSDN по мере необходимости. Программирование Windows также не охватывает COM, который может быть большой частью программирования Windows.

Имейте в виду, что API, который охватывает Petzold, является низкоуровневым и основанным на C. (Есть несколько более новых API, таких как GDI + и некоторые из COM-объектов, которые являются объектно-ориентированными.) Практически любая современная разработка будет объектно-ориентированной и часто будет использовать каркас, такой как .NET или Qt или Delphi VCL, так что вы редко будете писать законченные приложения, которые выглядят как пример кода в Программировании Windows ; Тем не менее, он все еще отлично подходит для объяснения того, что происходит под капотом.

Некоторое время назад я огляделся и не смог найти никаких новых ссылок на API. Я подозреваю, что это из-за огромного размера текущих API Windows; Программирование Windows, 5-е издание , уже насчитывает почти 1500 страниц, книга, в которой освещалось бы что-то новое, была бы слишком большой. Я нашел несколько интересных приложений для программирования Windows , хотя я еще не читал их:

  • Essential COM , от Don Box - Некоторые из новых API-интерфейсов Vista основаны на COM, а Petzold не охватывает COM.
  • Системное программирование Windows , Джонсон М. Харт - кажется, полностью пропускает GUI и GDI, которые Petzold так хорошо описывает, но в нем гораздо больше подробностей о современных подходах, таких как многопоточность, IPC и т. Д.
  • Windows Internals , Руссонович, Соломон и Ионеску - меньше об API и больше о том, как Windows работает под капотом. Руссонович, вероятно, знает об этом больше, чем кто-либо внутри или за пределами Microsoft.
Джош Келли
источник
0

API Windows изменился за эти годы. В него добавлены совершенно новые наборы функций (например, TaskDialog и семейство) и замены для существующих функций (например, CreateWindowEx ).

Я бы порекомендовал обратиться к новой ссылке.

Powerlord
источник
Есть предложения?
Габлин
К сожалению, нет ... Я не совсем программист на C / C ++ / WinAPI. Я просто знаю о существовании этих новых функций.
Powerlord
Вы хотите сказать, что 20-летняя ОС добавила в этот период совершенно новые функции ?! ум = взорван
MarcusJ
0

Планировщик заданий также является новым, было добавлено много новых объектов и интерфейсов. До планировщика заданий 2.0 в планировании задач участвовало около 5 объектов. В 2.0 (представленном, когда Vista вышла), есть 20, без шуток, 20. Это одна из не очень хороших вещей в программировании на win32, но это не так уж плохо.

Я люблю программировать на win32, вы так много узнаете о том, как работают Windows и другие ОС на более низком уровне, и я считаю, что это делает вас лучшим программистом. Если вы программируете на python, вы не узнаете, как организованы каталоги, просто используйте os.listdir(""). Но при использовании FindFirstFile()& FindNextFileв win32 вы узнаете, как организованы каталоги, обнаружите скрытые ".." & "." Каталоги и из этого могут придумать более эффективные способы каталогизации и поиска каталогов.

Для получения ресурсов win32 перейдите на страницу http://groups.google.com/group/comp.os.ms-windows.programmer.win32/topics.

user14321
источник