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.