Een venster Procedure ontwerpen

In het volgende voorbeeld toont de structuur van een typische venster procedure. De procedure venster wordt het argument bericht in een verklaring schakelen met afzonderlijke berichten verwerkt door afzonderlijke geval verklaringen. Merk op dat elk geval een specifieke waarde voor elk bericht retourneert. Voor berichten die het niet verwerkt, roept het venster procedure de functie DefWindowProc.

CALLBACK MainWndProc () LRESULT
    HWND hwnd, / / verwerken naar venster
    UINT uMsg, / / bericht id
    WPARAM wParam, / / eerste bericht parameter
    LPARAM lParam) / / tweede bericht parameter
{schakelaar (uMsg) {geval WM_CREATE: / / initialiseren van het venster. 
            retourneren 0; 
 
        geval WM_PAINT: / / schilderen van het clientgebied van het venster. 
            retourneren 0; 
 
        Case WM_SIZE: / / Stel de grootte en de positie van het venster. 
            retourneren 0; 
 
        Case WM_DESTROY: / / venster-specifieke gegevensobjecten opruimen. 
            retourneren 0; 
 
        / / / / Andere berichten verwerken. 
        / / default: terugkeer van de DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } retourneren 0; 
} 
 

De WM_NCCREATE messageis verzonden onmiddellijk na uw venster is gemaakt, maar als een toepassing op dit bericht reageert door terugkerende onwaar, CreateWindowEx functie mislukt. WM_CREATE wordt het bericht nadat uw venster al is gemaakt.

WM_DESTROY wordt het bericht wanneer uw venster staat te worden vernietigd. De DestroyWindow functie zorgt voor het vernietigen van elk kind windows van het venster wordt vernietigd. WM_NCDESTROY wordt het bericht net voordat een venster wordt vernietigd.

Op zijn minst, een venster procedure moet worden verwerkt de bericht WM_PAINT te trekken zelf. Meestal moet het muis en het toetsenbord ook berichten verwerken. Raadpleeg de beschrijvingen van de afzonderlijke berichten om te bepalen of uw venster procedure hen moet verwerken.

Uw toepassing kan bellen de DefWindowProc functie als onderdeel van de verwerking van een bericht. In een dergelijk geval, kan de toepassing het bericht parameters wijzigen voordat dit wordt doorgegeven aan DefWindowProc, of het kan blijven met de standaard verwerking na het uitvoeren van haar eigen activiteiten.

Een dialoogvenster vak procedure ontvangt een bericht van de WM_INITDIALOG in plaats van een WM_CREATE -bericht en onverwerkte berichten niet overgedragen aan de functie DefDlgProc . Anders, een dialoogvenster vak procedure is precies hetzelfde als de procedure van een venster.

Index