Casete combinate subclassed

Subclassing este o procedura care permite o cerere pentru a intercepta și procesul de mesaje trimise sau înregistrate într-o fereastră. Utilizând subclassing, o cerere poate înlocui propriile sale de prelucrare pentru anumite mesaje, lăsând majoritatea mesaj prelucrare la procedura definită de clasa fereastra.

Atunci când sistemul de operare creează o fereastră, salvează informații despre asta într-o structură de date interne care include adresa procedura fereastra. Pentru subclasa o fereastră, cererea apelurile funcția SetClassLong pentru a înlocui adresa acestei proceduri cu adresa instanță o procedură de aplicare-definită subclasă. După aceea, toate mesajele în fereastra sunt trimise la procedura subclasă. Această procedură utilizează apoi funcția CallWindowProc să treacă neprelucrate mesaje la procedura fereastra originală. Pentru o descriere de prelucrare mesaj efectuate de clasa COMBOBOX fereastra procedura, vezi Implicit comportamentul caseta Combo.

Atunci când caseta combo este în afara o casetă de dialog, cererea nu proces fila, introduceți și scăpa chei dacă nu se utilizează o procedură subclasă. Atunci când o casetă combo simplu sau drop-jos focalizat intrare, aceasta stabilește imediat focalizarea la controlul său copil de editare. Prin urmare, cererea trebuie subclasă comanda Editare pentru a intercepta input tastatură pentru o casetă combo simplu sau drop-down. Pentru un exemplu de acest lucru, a se vedea Subclassing o casetă Combo.

În cazul în care o procedură subclasă procese WM_PAINT mesaj, acesta trebuie să utilizați BeginPaint funcția să se pregătească pentru pictură. Înainte de asteptare EndPaint funcție, trece ghidajul dispozitivului-context (DC) ca parametrul wParam pentru procedura de fereastra. Dacă EndPaint este numit în primul rând, clasa fereastra procedura nu nu pictura deoarece EndPaint validează fereastra întreaga.

O tehnică legate de subclassing este superclassing. Un superclass seamănă cu orice altă clasă, cu excepția faptului că procedura de fereastra sa apel nu DefWindowProc să se ocupe de mesaje neprelucrate. În schimb, trece mesaje neprelucrate procedura fereastra de clasa-fereastra părinte. Urmați instrucțiunile din Fereastra procedurile pentru a evita problemele care pot apărea cu subclassing și superclassing.

Index