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


11

Чи сильно змінився API Windows 32 з часом? Чи містить у книзі Чарльза Петцольда "Програмування Windows, 5-е видання" від 1998 р. Все ще відповідна інформація, чи більшість є застарілою / застарілою?

Назвіть кілька визначних прикладів останніх доповнень до API Windows 32 (якщо такі є)?

Відповіді:


4

Новий API Thread Pool у Windows Vista - це серйозне вдосконалення та допомога добре написаним програмам з декількох потоків, для простого прикладу того, як розвивався WinAPI. Однак необхідність підтримувати сумісність стала рушійним фактором для збереження однакових основ API API і призвела до деяких неідеальних речей, наприклад, переважання Ex функцій, таких як CreateWindowEx. Ще є функції, сумісні з 64-бітовими Windows, які сумісні з 16-бітовими програмами.

Ця книга все ще буде корисною, якщо ви хочете писати програми на основі WinAPI, які виконують загальні функції в 1998 році, оскільки це малоймовірно, що API змінився. Звичайно, найкращі практики мови оригіналу можуть бути попереду лігами, особливо якщо книга написана для C або C ++, оскільки книга з 1998 року майже напевно була написана проти попереднього стандарту C ++.

Також правильною посиланням є API Windows, а не Windows 32 API, оскільки той самий API регулює і Windows 32, і Windows 64.


3

Я вважаю, що програмування Windows як і раніше корисне. Завдяки акцентуванню Microsoft на зворотній сумісності, всі основні елементи (ручки вікон, повідомлення, GDI тощо) здаються все ще актуальними і добре висвітлюються в Petzold. (Якщо щось зміниться занадто кардинально, це може зламати занадто багато існуючих програм Windows, і величезна кількість існуючих програм Windows є великою частиною переваги Windows на ринку.)

Існують конкретні нові API, такі як Setup API , API Thread Pool і GDI + , і з’являються нові теми, такі як робота в контексті UAC Vista та 7 UAC. Існує також кілька нових функцій, які Petzold не охоплює, але досить просто шукати нові теми на MSDN за потребою. Програмування Windows також не охоплює COM, що може бути великою частиною програмування Windows.

Майте на увазі, що API, який охоплює Petzold, є низьким рівнем та на базі С. (Є кілька новіших API, таких як GDI + та деякі елементи COM, які об'єктно-орієнтовані.) Практично будь-яка сучасна розробка буде об'єктно-орієнтована і часто використовуватиметься такі рамки, як .NET або Qt або VCL Delphi, тож ви рідко пишу повні програми, схожі на код прикладу в програмуванні Windows ; однак це все ще чудово для пояснення того, що відбувається під капотом.

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

  • Основний COM , Дон Бокс - Деякі нові API Vista засновані на COM, а Petzold не охоплює COM.
  • Програмування системи Windows , Джонсон М. Харт, - здається, повністю пропускає GUI та GDI, які Petzold так добре охоплює, але в них є набагато детальніше про сучасні підходи до верхніх багатопотокових, IPC тощо.
  • Windows Internals , Руссонович, Соломон та Іонеску - менше про API та більше про те, як Windows працює під капотом. Русонович, можливо, знає про це більше, ніж хтось із Microsoft або поза ним.

0

API Windows змінювався протягом багатьох років. До нього додаються абсолютно нові набори функцій (наприклад: TaskDialog та сімейство) та заміни для існуючих функцій (наприклад: CreateWindowEx ).

Я рекомендую проконсультуватися з новою інформацією.


Є якісь пропозиції?
габлін

На жаль, ні ... Я насправді не програміст C / C ++ / WinAPI. Я просто знаю про існування цих нових функцій.
Powerlord

Ти маєш на увазі сказати мені, що 20-річна ОС додала цілі нові функції за той період часу ?! розум = підірваний
MarcusJ

0

Планувальник завдань також новий, додано багато нових об’єктів та інтерфейсів. До Планувальника завдань 2.0 було близько 5 об'єктів, які беруть участь у завданнях планування. У 2.0 (представлений, коли з'явилася Vista), є 20, не жартує, 20. Це не дуже великі речі щодо програмування win32, але це не так вже й погано.

Мені подобається програмування в win32, ти так багато дізнаєшся про те, як Windows та інші ОС працюють на нижчому рівні, і це робить тебе кращим програмістом, я вважаю. Якщо ви програмуєте в python, ви не дізнаєтесь про те, як організовані каталоги, просто використовуйте os.listdir(""). Але використовуючи FindFirstFile()& FindNextFilein win32, ви дізнаєтесь, як організовані каталоги, виявляйте приховані ".." і "." каталоги та ін. можуть запропонувати більш ефективні способи каталогізації та пошуку каталогів.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.