Utforme en vindusprosedyre

Eksemplet nedenfor viser strukturen på en typisk vindusprosedyre. Vinduet fremgangsmåten bruker melding-argumentet i en bytte uttalelse med individuelle meldinger som håndteres av egen sak -setninger. Legg merke til at hvert tilfelle returnerer en bestemt verdi for hver melding. For meldinger som det ikke behandler, kaller vindusprosedyre funksjonen DefWindowProc.

Ikke hente LRESULT TILBAKERINGING MainWndProc)
    HWND hwnd, / / håndtere til vinduet
    UINT uMsg, / / message identifikator
    WPARAM wParam, / / message først parameteren
    LPARAM lParam) / / sekund message-parameter
{bryteren (uMsg) {case WM_CREATE: / / initialisere vinduet. 
            returnere 0; 
 
        tilfelle WM_PAINT: / / male vinduets klientområdet. 
            returnere 0; 
 
        Case WM_SIZE: / / Set størrelsen og plasseringen av vinduet. 
            returnere 0; 
 
        Case WM_DESTROY: / / rydde opp vinduet-spesifikke data objects. 
            returnere 0; 
 
        / / / / Behandle andre meldinger. 
        / / default: gå tilbake til DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } returnere 0; 
} 

 

WM_NCCREATE -messageis som er sendt bare når vinduet er opprettet, men hvis et program reagerer på denne meldingen ved å returnere USANN, CreateWindowEx funksjonen mislykkes. WM_CREATE -meldingen blir sendt når vinduet er allerede opprettet.

WM_DESTROY -meldingen blir sendt når vinduet er i ferd med å bli ødelagt. Funksjonen DestroyWindow hånd tar om å ødelegge alle underordnede vinduer i vinduet blir ødelagt. WM_NCDESTROY -meldingen er sendt bare før et vindu er ødelagt.

I det minste en vindusprosedyre skal behandle de WM_PAINT -melding til å tegne seg selv. Vanligvis, det skal håndtere også musen og tastaturet meldinger. Se beskrivelsene av individuelle meldinger for å finne ut om din vindusprosedyre skal behandle dem.

Programmet kan kalle DefWindowProc -funksjonen som en del av behandling av en melding. I slike tilfeller, programmet kan endre parameterne melding før meldingen sendes til DefWindowProc, eller du kan fortsette med standard behandling etter sin egen operasjoner utføres.

En dialog boks prosedyre mottar en WM_INITDIALOG melding i stedet for en WM_CREATE -melding og sender ikke ubehandlet meldinger til funksjonen DefDlgProc . Ellers er en dialog boks prosedyre akkurat det samme som en vindusprosedyre.

Index