Ewolucja API Win32 [zamknięty]

11

Czy interfejs API systemu Windows 32 zmienił się z czasem? Czy książka Charlesa Petzolda „Programowanie systemu Windows, wydanie 5” z 1998 r. Nadal zawiera istotne informacje, czy też większość z nich jest przestarzała / nieaktualna?

Jakie są wybitne przykłady najnowszych dodatków do interfejsu API systemu Windows 32 (jeśli istnieją)?

fredoverflow
źródło

Odpowiedzi:

4

Nowy interfejs API puli wątków w systemie Windows Vista stanowi poważne udoskonalenie i pomoc w dobrze napisanych programach wielowątkowych, stanowiący prosty przykład ewolucji WinAPI. Jednak potrzeba zachowania zgodności była czynnikiem napędzającym utrzymanie niezmienionych podstaw interfejsu API systemu Windows i spowodowała pewne nieidealne rzeczy, takie jak przewaga funkcji Ex, takich jak CreateWindowEx. Nadal istnieją funkcje kompatybilne z 64-bitowym systemem Windows, które są kompatybilne z programami 16-bitowymi.

Ta książka będzie nadal przydatna, jeśli chcesz pisać programy oparte na WinAPI, które wykonują funkcje, które były wspólne w 1998 roku, ponieważ jest mało prawdopodobne, że interfejs API się zmienił. Oczywiście najlepsze praktyki w języku źródłowym mogą być o wiele dalej, szczególnie jeśli książka jest napisana dla C lub C ++, ponieważ książka z 1998 roku prawie na pewno została napisana przeciwko wcześniejszemu standardowi C ++.

Prawidłowym odniesieniem jest także interfejs Windows API, a nie Windows 32 API, ponieważ ten sam API dotyczy zarówno Windows 32, jak i Windows 64.

DeadMG
źródło
3

Odkryłem, że programowanie systemu Windows nadal jest przydatne. Dzięki naciskowi Microsoft na kompatybilność wsteczną wszystkie podstawowe rzeczy (uchwyty okien, wiadomości, GDI itp.) Wydają się być nadal aktualne i są dobrze omówione w Petzold. (Gdyby coś zmieniło się zbyt drastycznie, zepsułoby to zbyt wiele istniejących programów Windows, a ogromna liczba istniejących programów Windows stanowi dużą część przewagi Windows na rynku).

Istnieją specyficzne nowe interfejsy API, takie jak Setup API , API puli wątków i GDI + , a także nowe tematy, takie jak praca w kontekście UAC Vista i 7. Istnieje również kilka indywidualnych nowych funkcji, których Petzold nie obejmuje, ale w razie potrzeby można łatwo wyszukać nowe tematy w MSDN. Programowanie Windows również nie obejmuje COM, który może być dużą częścią programowania Windows.

Należy pamiętać, że interfejs API, który obejmuje Petzold, jest oparty na niskim poziomie i oparty na C. (Istnieje kilka nowszych interfejsów API, takich jak GDI + i niektóre elementy COM, które są zorientowane obiektowo.) Praktycznie każdy nowoczesny program będzie zorientowany obiektowo i często będzie korzystał z frameworku, takiego jak .NET lub Qt lub VCL Delphi, więc „Rzadko piszę kompletne aplikacje, które wyglądają jak przykładowy kod w Programowaniu Windows ; jednak nadal świetnie nadaje się do wyjaśniania, co się dzieje pod maską.

Rozejrzałem się jakiś czas temu i nie mogłem znaleźć żadnych nowych odniesień do API. Podejrzewam, że dzieje się tak ze względu na rozmiar obecnych interfejsów API systemu Windows; Programowanie systemu Windows, wydanie 5 ma już prawie 1500 stron, książka obejmująca wszystko, co nowe, byłaby zbyt duża. Znalazłem kilka interesujących dodatków do Programowania systemu Windows , chociaż jeszcze ich nie przeczytałem:

  • Essential COM , autor: Don Box - Kilka nowych API Visty jest opartych na COM, a Petzold nie obejmuje COM.
  • Programowanie systemu Windows autorstwa Johnsona M. Harta - wydaje się całkowicie pomijać GUI i GDI, które Petzold tak dobrze omawia, ale ma znacznie więcej szczegółów na temat nowoczesnych podejść do wielowątkowości, IPC itp.
  • Windows Wewnętrzne , Russonovich, Solomon i Ionescu - mniej o interfejsach API i więcej o tym, jak Windows działa pod maską. Russonowicz prawdopodobnie wie o tym więcej niż ktokolwiek w firmie Microsoft lub poza nią.
Josh Kelley
źródło
0

Interfejs API systemu Windows zmienił się na przestrzeni lat. Dodano całkowicie nowe zestawy funkcji (np .: TaskDialog i rodzina) oraz zastępuje istniejące funkcje (np .: CreateWindowEx ).

Polecam skonsultować nowszą referencję.

Władca
źródło
Masz jakieś sugestie?
gablin
Niestety nie ... Nie jestem programistą C / C ++ / WinAPI. Po prostu wiem o istnieniu tych nowszych funkcji.
Władca
Chcesz mi powiedzieć, że 20-letni system operacyjny dodał w tym czasie całkiem nowe funkcje ?! umysł = zdmuchnięty
MarcusJ
0

Harmonogram zadań jest również nowy, dodano wiele nowych obiektów i interfejsów. Przed Task Scheduler 2.0 w planowanie zadań było zaangażowanych około 5 obiektów. W wersji 2.0 (wprowadzonej wraz z pojawieniem się Visty) jest ich 20, bez żartów, 20. To jedna z niezbyt dobrych rzeczy w programowaniu win32, ale nie jest tak źle.

Uwielbiam programować w win32, uczysz się tak dużo o tym, jak Windows i inne systemy operacyjne działają na niższym poziomie, a to czyni cię lepszym programistą. Jeśli programujesz w Pythonie, nie wiesz, jak zorganizowane są katalogi, po prostu użyj os.listdir(""). Ale podczas używania FindFirstFile()& FindNextFilew win32 odkrywasz, jak są zorganizowane katalogi, odkrywasz ukryte „..” i „.” katalogi i na tej podstawie można wymyślić bardziej wydajne sposoby katalogowania i wyszukiwania katalogów.

Zasoby dotyczące systemu win32 znajdują się na stronie http://groups.google.com/group/comp.os.ms-windows.programmer.win32/topics

użytkownik14321
źródło