Subklasse keuzelijsten met invoervakken

Subclassificering is een procedure waarmee een toepassing te onderscheppen en proces berichten verzonden of gepost naar een venster. Met behulp van subclassificering, een toepassing kunt vervangen door een eigen verwerking voor bepaalde berichten, terwijl de meeste berichtverwerking volgens de gedefinieerde klasse venster.

Wanneer een venster het besturingssysteem maakt, bespaart het informatie over het in een interne gegevensstructuur waarin het adres van de venster-procedure. Voor subklasse een venster roept een toepassing de functie SetClassLong aan het adres van die procedure vervangen door het adres van de instantie van een subklasse toepassing gedefinieerde procedure. Daarna worden alle berichten naar het venster verzonden volgens de subklasse. Deze procedure wordt vervolgens de functie CallWindowProc onverwerkte berichten doorgeven aan het oorspronkelijke venster procedure. Zie voor een beschrijving van de verwerking van berichten door de COMBOBOX klasse venster procedure uitgevoerd, Standaard Combo Box gedrag.

Wanneer de keuzelijst met invoervak buiten een dialoogvenster is, niet kan een toepassing verwerken het tabblad invoeren en ontsnappen toetsen tenzij het gebruikt een subklasse procedure. Wanneer een eenvoudige of drop-down keuzelijst met invoervak het invoerfocus ontvangt, het onmiddellijk de focus ingesteld op haar kind bewerken controle. Daarom moet een toepassing subklasse het besturingselement bewerken te onderscheppen toetsenbordinvoer voor een eenvoudige of keuzelijst met invoervak. Zie voor een voorbeeld van dit, een keuzelijst met invoervak Subclassing.

Als een subklasse procedure verwerkt de WM_PAINT -bericht, het moet gebruiken de BeginPaint functie voor schilderij te bereiden. Belt de EndPaint functie, het passeert het handvat apparaatcontext (DC) als de wParam -parameter voor de procedure venster. Als EndPaint eerst heet, doet de klasse venster procedure geen schilderen omdat EndPaint het hele venster valideert.

Een techniek aan subclassificering gerelateerde is superclassing. Een superklasse lijkt op een andere klasse behalve dat haar procedure venster doet niet call DefWindowProc onverwerkte berichten worden verwerkt. In plaats daarvan het onverwerkte berichten wordt doorgegeven aan de procedure venster voor het bovenliggende venster klasse. Volg de richtlijnen in Venster Procedures om problemen die kunnen optreden met subclassificering en superclassing te voorkomen.

Index