Proiectarea o procedură fereastra

Următorul exemplu arată structura unei proceduri fereastra tipic. Procedura fereastra utilizează argumentul mesaj într-o declarație trece cu mesajele individuale manipulate separat cazul declara?iile. Observați că fiecare caz returnează o valoare specifică pentru fiecare mesaj. Pentru mesajele care este procesul de nu, procedura fereastra apelează funcția DefWindowProc.

LRESULT (MainWndProc de apel INVERS
    HWND hwnd, / / ocupa fereastra
    UINT uMsg, / / mesaj identificator
    WPARAM wParam, / / primul mesaj parametru
    LPARAM lParam) / / al doilea parametru mesaj
{switch (uMsg) {caz WM_CREATE: / / inițializa fereastra. 
            întoarce 0; 
 
        caz WM_PAINT: / / vopsea zone a ferestrei client. 
            întoarce 0; 
 
        caz WM_SIZE: / / setați dimensiunea și poziția a ferestrei. 
            întoarce 0; 
 
        caz WM_DESTROY: / / Clean up obiectele de date specifice pentru fereastra. 
            întoarce 0; 
 
        / / / / Procesa alte mesaje. 
        / / implicit: return DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } întoarce 0; 
} 

 

Messageis de WM_NCCREATE trimis doar după ce este creat pe fereastră, dar în cazul în care o cerere a răspunde la acest mesaj prin returnarea FALSE, CreateWindowEx funcția eșuează. WM_CREATE mesajul este trimis după ce vă fereastra este creat deja.

WM_DESTROY mesajul este expediat când fereastra ta este pe cale să fie distruse. Funcția DestroyWindow are grijă de a distruge orice copil windows a ferestrei fiind distruse. WM_NCDESTROY mesajul este trimis doar înainte o fereastră este distrus.

Cel puțin, o procedură de fereastra trebuie să prelucreze WM_PAINT mesaj pentru a desena sine. De obicei, se ar ocupa mesaje mouse-ul ?i tastatura. Consultați descrierile individuale mesaje pentru a determina dacă dumneavoastră fereastra procedură ar trebui să ocupe le.

Cererea dumneavoastră puteți apela funcția DefWindowProc ca parte a prelucrării unui mesaj. În acest caz, cererea poate modifica parametrii mesaj înainte de a trece mesajul la DefWindowProc, sau care poate continua cu implicit de prelucrare după efectuarea propriilor sale transporturi.

O procedură de caseta de dialog primește un mesaj WM_INITDIALOG în loc de un mesaj WM_CREATE și nu trece mesaje neprelucrate la funcția de DefDlgProc . În caz contrar, o procedură de caseta de dialog este exact la fel ca o procedură de fereastra.

Index