include-Dateien = win32api ?



  • Hallo,
    ich interesiere mich sehr für die Windowsprogrammierung. :p
    Ihr könnt mich noob nennen.
    🙄
    Hier meine erste Frage. 😋
    Eingentlich habe ich viele Fragen, ich fange gerade an das Buch Windows Programmierung von Charls Petzold zu lesen.

    1. Sind die include Dateien ein etwäs anderes Abbild von Win32api-Funktionen?
    2. Oder ist es nur ein Aufsatz wie MFC der dann wiederrum Win32apis aufruft?

    Ich glaub das reicht erstmal. bis dann



  • ein tip von mir: leg sofort den petzold weg und nimm erst mal ein C oder C++ buch für anfänger durch, denn petzold zeigt dir nur wie du windows ansteurst, über die programmiersprache steht da nix dinnen.

    Zu deiner frage:
    #include beteutet, öffne die angegebene datei und kopiere er inhalt an die stelle wo das include steht. In den include dateien (z.b. windows.h) stehen dann die funktions-deklaraktionen, die deinem programm ja bekannt sein müssen bevor du sie nutzten kannst.

    bsp:

    // file1.cpp
    void do_it() 
    {
    ...
    }
    
    // file2.cpp
    int main()
    {
      do_it(); // fehler, kennt der compiler nicht
      return 1;
    }
    
    // file1.cpp
    void do_it() 
    {
    ...
    }
    
    // file1.h
    void do_it();
    
    // file2.cpp
    #include "file1.h"
    int main()
    {
      do_it(); // jetzt gehts
      return 1;
    }
    


  • Danke,
    ich habe noch eine weitere Frage.
    In den Include-Dateien sind wie du gesagt hast funktions-deklaraktionen drinne, damit sind aber nicht unter anderem Win32api-Funktionen gemeint oder?

    Ruft eine include Datei auch win32api-Funktionen auf? Man will ja nicht das Rad neu erstellen. Zum Beispiel Ein und Ausgabe in iostrem.h, sind da Aufrufe an Win32api-Funktionen oder sind die Funktionen in der iostream.h?



  • In so nem file kann stehen was will.
    Wenn du z.b. ein MessageBox verwenden willst kennst das dein compiler weils in der winuser.h steht, die über die windows.h eingebunden wird, sieht dann so aus in der winuser.h:

    #ifdef _WIN32_WINNT
    #if (_WIN32_WINNT >= 0x0400)
    #define MB_SERVICE_NOTIFICATION          0x00200000L
    #else
    #define MB_SERVICE_NOTIFICATION          0x00040000L
    #endif
    #define MB_SERVICE_NOTIFICATION_NT3X     0x00040000L
    #endif
    
    #define MB_TYPEMASK                 0x0000000FL
    #define MB_ICONMASK                 0x000000F0L
    #define MB_DEFMASK                  0x00000F00L
    #define MB_MODEMASK                 0x00003000L
    #define MB_MISCMASK                 0x0000C000L
    
    WINUSERAPI
    int
    WINAPI
    MessageBoxA(
        IN HWND hWnd,
        IN LPCSTR lpText,
        IN LPCSTR lpCaption,
        IN UINT uType);
    WINUSERAPI
    int
    WINAPI
    MessageBoxW(
        IN HWND hWnd,
        IN LPCWSTR lpText,
        IN LPCWSTR lpCaption,
        IN UINT uType);
    #ifdef UNICODE
    #define MessageBox  MessageBoxW
    #else
    #define MessageBox  MessageBoxA
    #endif // !UNICODE
    

    aber wie gesagt, am besten du schnappst dir erst mal ein buch tutorial zur programmiersprache, das zeug hat nähmlich nicht direkt was der winapi zu tun 😉



  • Aber die Zeichnung der Form einer MessageBox und die Programmlogik ist die auch in der winuser.h? Ich könnte mir vorstellen das die Header-Datei die Winapi32-Funktionen aus einer DLL von system32 Ordner aufruft, da die logik und die Zeichnung in der DLL sind.
    Oder anders gefragt wenns nicht so wäre, wiso steckt man dann den Code nochmal in Headerdateien, wenn sie schon in dlls vorhanden sind 😕 (fals sie vorhanden sind)



  • klar, der die implementierung von MessageBox ist einer lib oder dll, die header (include datei) brauchst du für den compiler, woher soll der sonst wissen das es so ne MessageBoc funktion gibt.



  • Thx,
    das war die Frage, ich habe gedacht die implementierung von der MessageBox wäre eventuell auch in der include datei, jetzt wird mir einiges klarer. 🙂



  • CMatt schrieb:

    aber wie gesagt, am besten du schnappst dir erst mal ein buch tutorial zur programmiersprache, das zeug hat nähmlich nicht direkt was der winapi zu tun 😉

    Ich hab schon mehr oder weniger in C++ 6.0(auch ein kleines Projekt mit MFC) programiert und jetzt mit porgrammiere ab und zu in C# und WinForms.
    Aber es gibt ja auch Grenzen bei den aufgesetzten Bibliotheken wie MFC und .NET.
    Deshalb will ich mit mehr mit der WinApi auseinander setzten.
    Was würdest du mir empfehlen, wenn ich mehr über winapi lernen will?
    Ich würde gern mehr über Wrapper und Marsheling oder wie das heißt lernen.
    Sind Bücher wie "Go to Com" das richtige für mich?


Anmelden zum Antworten