Windows Fenster?



  • Hi,
    ich hab ein Problem mit WindowsFenster, aber die erklehrung in meinen Büchern ist sehr Kompliziert gehalten. Ich wollt fragen ob jemand vieleicht ein Tutorial hat, wo ungefähr soll ein Code erklehrt wird:
    Bedanke mich für Antworten 😉

    // Headerdatei
    #include <windows.h>
    
    // Anwendungsfenster erzeugen
    HWND CreateMainWindow(HINSTANCE hInstance);
    
    //Callback Funktion zur Nachrichtenbehandlung
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
    
    // Das Fensterhandle
    HWND hWnd = 0;
    
    // Windows main-Funktion
    int WINAPI WinMain(HINSTANCE hInstance,      // Handle der Programminstanz
                       HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                       LPSTR lpCmdLine,          // Kommandozeile
                       int nCmdShow)             // Art wie das Fenster angezeigt werden soll
    {   
        // Fenster erzeugen und Handle speichern
        hWnd = CreateMainWindow(hInstance);
    
        // Wenn der Rückgabewert 0 ist, ist ein Fehler aufgetreten
        if(0 == hWnd)
        {
            MessageBox(0,"Fenster konnte nicht erzeugt werden","Fehler",MB_OK);
            return 0;
        }
    
       // Struktur, in der Informationen zur Nachricht gespeichert werden
        MSG msg;
    
        // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird
        while(GetMessage(&msg,NULL,0,0))
       {
              // Nachricht an die Callbackfunktion senden
             TranslateMessage(&msg);
             DispatchMessage(&msg);
        }
    
        // Rückgabewert an Windows
        return 0;
    }
    
    HWND CreateMainWindow(HINSTANCE hInstance)
    {
        WNDCLASSEX wndClass;                                   // WNDCLASSEX Struktur
    
        // Struktur initialisieren
        wndClass.cbSize        = sizeof(WNDCLASSEX);           // Größe angeben (nie vergessen!)
        wndClass.style         = CS_DBLCLKS | CS_OWNDC |
                                 CS_HREDRAW | CS_VREDRAW;      // Standard Stile
        wndClass.lpfnWndProc   = MessageHandler;               // Die Callback Funktion angeben
    
        wndClass.cbClsExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
        wndClass.cbWndExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
        wndClass.hInstance     = hInstance;                    // Anwendungsinstanz
    
        wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);  // Weisser Pinsel
        wndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);  // Normaler Cursor
        wndClass.lpszMenuName  = NULL;                         // Das Fenster hat kein Menü
        wndClass.lpszClassName = "WindowClass";                // Der Name der Klasse
        wndClass.hIcon         = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
        wndClass.hIconSm       = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
    
        RegisterClassEx(&wndClass);
    
        return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                              "WindowClass",          // Klassenname
                              "Hello Windows",        // Fenstertitel
                              WS_OVERLAPPEDWINDOW |   // Fenster
                              WS_VISIBLE,             // Eigenschaften
                              0, 0, 800, 600,         // Anfangsposition und Größe
                              NULL,                   // Handle des Elternfensters
                              NULL,                   // Handle des Menüs
                              hInstance,              // Anwendungsinstanz
                              NULL);                  // wird nicht benötigt
    }
    
    // Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht
    // für Ihr Programm vorliegt
    LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
        // testen, um welche Nachticht es sich handelt
        switch(msg)
        {
            // wenn das Fenster geschlossen wird, eine Nachricht senden,
            // die das Programm beendet
            case WM_DESTROY:
                        PostQuitMessage(0);
                        return 0;
                    break;       
        }
    
        // Wenn wir uns nicht um die Nachricht gekümmert haben
        // wird sie an die Standardnachrichtenverarbeitung von Windows
        // geschickt
        return (DefWindowProc(hwnd, msg, wParam, lParam));
    }
    

    edit: Bitte benutze Codetags.

    [ Dieser Beitrag wurde am 30.01.2003 um 20:59 Uhr von cd9000 editiert. ]



  • Öhöm. Sind dir das nicht genug Erklärungen in den Kommentaren? Geh mal auf www.win-api.de. Ansonsten ist die MSDN auch nicht schlecht.

    [ Dieser Beitrag wurde am 29.01.2003 um 18:09 Uhr von WebFritzi editiert. ]



  • MSDN hab ich leider nicht 😞 Die kommentare helfen mir nur etwas. Vieleicht eine klitzkleine erklärung im welchen zusammenhang das alles steht.



  • [url] msdn.microsoft.com [/url]

    meint er damit was du meinst ist MS Libary



  • Original erstellt von Gott der 2.:
    MSDN hab ich leider nicht 😞 Die kommentare helfen mir nur etwas. Vieleicht eine klitzkleine erklärung im welchen zusammenhang das alles steht.

    Konnte das jetzt nur überfliegen, da du keine Code-Tags genommen hast. Das dürfte einfach ein kleienes Proggi sein, das ein Fenster darstellt, auf dem nix drauf ist.



  • Und das Fenster hat einen weißen Hintergrund und ist mit "Hello Windows" beschriftet ;).

    cya 🙂



  • Und hat das Windows-Logo als Icon. Und ist von der Fenster-Klasse "WindowClass".



  • Genau... für weitere Informationen drücken Sie bitte die '1'.

    cya 🙂



  • 1



  • ähm, ich habe auf 1 gedrückt. Wo bleiben die Informationen? 😕 🙄



  • Ist das nicht aus dem Petzold?



  • sieht nicht so aus


Anmelden zum Antworten