Entwerfen einer Fensterprozedur

Das folgende Beispiel zeigt die Struktur einer typischen Windows-Prozedur. Die Fensterprozedur verwendet das Message-Argument in einer switch -Anweisung mit einzelner Nachrichten von Case -Anweisungen behandelt. Beachten Sie, dass jeweils einen bestimmten Wert für jede Nachricht zurückgibt. Für Nachrichten, die es nicht verarbeitet, ruft die Fensterprozedur die DefWindowProc -Funktion.

LRESULT CALLBACK MainWndProc)
    HWND Hwnd, / / handle zum Fenster
    UINT uMsg, / / message ID
    WPARAM wParam, / / erste message Parameter
    LPARAM lParam) / / zweite Nachrichtenparameter
{Switch (uMsg) {case WM_CREATE: / / Initialize Fenster. 
            return 0; 
 
        Fall WM_PAINT: / / Paint Clientbereich des Fensters. 
            return 0; 
 
        Case WM_SIZE: / / Legen Sie die Größe und Position des Fensters. 
            return 0; 
 
        Case WM_DESTROY: / / Fenster-spezifische Datenobjekte bereinigen. 
            return 0; 
 
        / / / / Weitere Nachrichten verarbeiten. 
        / / default: return DefWindowProc (Hwnd, uMsg, wParam, lParam); 
    } return 0; 
} 

 

Die WM_NCCREATE -Messageis gesendet, nachdem Ihre Fenster erstellt wird, aber wenn eine Anwendung auf diese Nachricht antwortet durch Rückgabe FALSE, CreateWindowEx -Funktion fehlschlägt. Die WM_CREATE -Nachricht wird gesendet, nachdem Ihre Fenster bereits erstellt wurde.

Die WM_DESTROY -Nachricht wird gesendet, wenn Ihr Fenster zu zerstört werden. Die DestroyWindow -Funktion übernimmt zerstören alle untergeordneten Fenster des Fensters zerstört. Die WM_NCDESTROY -Nachricht wird gesendet, bevor ein Fenster zerstört wird.

Am allerwenigsten, eine Fensterprozedur verarbeiten sollten die WM_PAINT -Nachricht an sich selbst zu zeichnen. Normalerweise sollte es auch Maus und Tastatur Nachrichten behandelt. Finden Sie die Beschreibungen der einzelnen Nachrichten zu bestimmen, ob Ihre Fensterprozedur behandelt werden soll.

Ihre Anwendung kann die DefWindowProc -Funktion als Teil der Verarbeitung einer Nachricht aufrufen. In einem solchen Fall die Anwendung kann vor der Übergabe der Nachricht an DefWindowProcder Message-Parameter ändern, oder es kann mit der Standardverarbeitung nach eigenen Operationen fortfahren.

Eine Dialogfeld im Feld Prozedur empfängt eine WM_INITDIALOG -Meldung statt einer WM_CREATE -Nachricht und leitet nicht verarbeitete Nachrichten nicht an die DefDlgProc -Funktion. Andernfalls ist eine Dialogfeld im Feld Prozedur genau das gleiche wie eine Fensterprozedur.

Index