WinApi Fenster funktioniert nicht



  • Ich versuche gerade mein erstes Fenster zu programmieren. Geht aber nicht. Woran liegt es?

    #include "stdafx.h"
    #include <windows.h>
    
    // Konstanten
    // ----------
    // Fensterklassen-Name
    LPCTSTR lpszWCLASSNAME = L"ERSTES FENSTER";
    LPCTSTR lpszTITLE = L"Mein erstes Fenster";
    LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg,
                             WPARAM wParam, LPARAM lParam);
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR lpCmdLine,
                         int nCmdShow )
    {
        // Fensterklasse registrieren
        // --------------------------
        // WNDCLASS-Strukur
        WNDCLASSEX WndClass;
    	WNDPROC WndProc;
        // Struktur mit '0' vorbelegen
        memset(&WndClass,0,sizeof(WndClass));
        WndClass.cbSize = sizeof(WndClass);
        // Fensterprozedur einhaengen
        WndClass.lpfnWndProc = WndProc;
        // Instanzen-Handle
        WndClass.hInstance = hInstance;
        // Icon fuer Fensterklasse laden
        WndClass.hIcon = LoadIcon(0,IDI_WINLOGO);
        // Cursor fuer Fensterklasse laden
        WndClass.hCursor = LoadCursor(0,IDC_UPARROW);
        // Fensterhintergrund setzen
        WndClass.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
        // Fensterklassen-Name
        WndClass.lpszClassName = lpszWCLASSNAME;
        // Fensterklasse registrieren
        RegisterClassEx(&WndClass);
    
       // Fenster erzeugen
        HWND hWindow;                                  // Fenster-Handle
        hWindow = CreateWindowEx(0,                    // kein erweiterter Stil
                                 lpszWCLASSNAME,       // Fensterklassen-Name
                                 lpszTITLE,            // Fenstertitel
                                 WS_OVERLAPPEDWINDOW,  // Fensterstil
                                 CW_USEDEFAULT, 0,     // Position
                                 CW_USEDEFAULT, 0,     // Groesse
                                 (HWND)0,              // kein Parent-Fenster
                                 (HMENU)0,             // kein Menu
                                 hInstance,            // Instanzen-Handle
                                 NULL);                // keine zusaetzl. Daten
        // Fehler abfangen
        if (hWindow == NULL)
        {
            MessageBox(0,L"Fehler beim CreateWindowEx(...)!",
                       L"FEHLER",MB_OK);
            return 0;
        }
    	ShowWindow (hWindow, nCmdShow);
    	   // Nachrichten-Schleife
        // --------------------
        MSG strMessage;    // Nachrichten-Struktur definieren
        // Auf Nachricht warten
        while (GetMessage(&strMessage,NULL,0,0))
        {
            // Tastencode uebersetzen
            TranslateMessage(&strMessage);
            // Nachricht an Fensterprozedur verteilen
            DispatchMessage(&strMessage);
        }
        return 0;
    }
    LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg,
                             WPARAM wParam, LPARAM lParam)
    {
        // Alles durch WINDOWS bearbeiten lassen
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    

    warning C4700: Die nicht initialisierte lokale Variable "WndProc" wurde verwendet. Spuckt der Kompiler aus...



  • Wenn du die Zeile:

    WNDPROC WndProc;
    

    Entfernst sollte es gehen.



  • evilissimo schrieb:

    Wenn du die Zeile:

    WNDPROC WndProc;
    

    Entfernst sollte es gehen.

    Funzt jetzt... Thx!



  • Wie baue ich da einen Button ein?? Mit funktion am besten...



  • Einen Button kannst du mit CreateWindow erstellen

    > http://msdn.microsoft.com/en-us/library/ms632679(VS.85).aspx


Anmelden zum Antworten