Grundverständnis Win32-API
-
Hallo, ich beschäftige mich momentan mit der API Programmierung unter Windows.
Habe bereits das Petzold Buch gut durch gelesen aber frage mich immer wieder eines.
Durch „#Include windows.h“ binde ich doch den Header in mein Programm ein.
Die Funktionen die ich dort verwende werden also in mein Programm eingebunden/kopiert (dachte ich zumindest immer bis jetzt
).
Da aber die Windows-API in Windows doch von Haus aus Compeliert integriert sind frage ich mich, kann ich denn aufgrund der MSDN-Dokumentation (in der auch die *.DLL Dateien in denen diese Funktion ist genannt wird) nicht durch einbinden dieser *.DLLs die Windows_API verwenden?

Vielen Dank im Voraus
-
Dir fehlt das Verständnis von DLLs (Dynamic Link Libraries). In den Teilen liegen zwar die Funktionen schon fertig kompilliert vor - aber wie soll dein Compiler denn wissen, in welcher DLL welche Funktion, und vorallem wo liegt? Dafür gibts die .lib-Dateien und für die Funktionsdefinitionen die .h, die alle in windows.h inkludet werden.
Hoffe, das bringt dir jetzt was

Greetz

-
Beim Compilieren werden automatisch drei dlls mit eingebunden: user.dll, gdi.dll und gui.dll. Die werden vermutlich alle drei für API-Aufrufe benötigt. Genauer gesagt sind darin die eigentlichen Funktionen implementiert (vermute ich, wegen der Namen. Genau weiß ich es nicht).
Aber es reicht nicht, daß die dlls verlinkt werden. Du mußt die Funktionen auch irgendwo aufrufen.
windows.h bindet zusätzlich weitere Header ein. Die Header enthalten nicht die API, sondern nur die #define-Anweisungen mit den numerischen IDs der Funktionen und Nachrichten (so, wie Du es in resource.h selbst machst, wenn Du ein Menü definierst), damit der User sich nicht tausend Zahlen merken muß, sondern nur WM_PAINT oder BeginPaint()... schreiben braucht.
-
Welche DLL für welche WinAPI-Funktion benötigt wird steht in der MSDN.
Geläufig ist eigentlich nur die kernel32.dll (zumindest bei Consolen-Anwendungen).
-
Vielen Dank euch allen!
