Egendefinerte kontroller

Programmer kan opprette egendefinerte kontroller til å utføre oppgaver som ikke støttes av forhåndsdefinerte kontroller. Win32 API gir følgende måter for å opprette egendefinerte kontroller:

Ved hjelp av kontrollene for eieren-tegnet

Knapper, lister og kombinasjonsbokser har trukket eier styles tilgjengelig som direkte kontroll til å sende en melding til det overordnede vinduet når kontrollen må trekkes. Denne funksjonen tillater at et program til å endre utseendet til en kontroll. Knapper påvirker eier trukket-stilen hvordan systemet trekker hele kontrollen. Det overordnede vinduet trekker elementene, i kontrollen for lister og kombinasjonsbokser, og kontrollen tegner omrisset egen. Et program kan for eksempel tilpasse en liste slik at den viser en liten punktgrafikk ved siden av hvert element i listen.

Et program kan angi listebokser, kombinasjonsbokser og knapper som eier trukket kontroller ved å opprette dem med riktig stil. Når en kontroll har stilen eier-tegnet, håndterer systemet brukerens interaksjon med kontrollen som vanlig, utfører oppgaver som å oppdage når en bruker har valgt en knapp, og varsle knappens eieren av hendelsen. Men fordi kontrollen er eieren trukket, er det overordnede vinduet i kontrollen ansvarlig for det visuelle utseendet av kontrollen. Hvis du vil ha mer informasjon om eier trukket kontroller, se eier trukket knapper, trukket eier listen, og eier-trukket kombinasjonsbokser .

Delklassifisere vindusklasse av en eksisterende kontroll

Delklassifisere en eksisterende kontroll er en annen måte å opprette en egendefinert kontroll. Prosedyren underklasse kan endre valgte virkemåter for kontrollen ved å behandle meldingene som påvirker den valgte atferd. Alle andre meldinger sendes til den opprinnelige vindusprosedyre for kontrollen. Et program kan for eksempel vise et lite punktgrafikkbilde ved siden av teksten i en skrivebeskyttet, enlinjet redigeringskontroll ved delklassifisere kontrollen og behandling av den WM_PAINT -melding. Hvis du vil ha mer informasjon, kan du se Vinduet prosedyren i underklasse.

Selv om et program kan underklasse en forhåndsdefinert kontroll, beror den på vindusprosedyre av kontrollen å gi alle andre deler av kontrollens atferd. Hvis du vil ha mer informasjon om virkemåten for en kontroll, se individuelle emnet for forhåndsdefinerte kontroller.

Implementering av en programdefinert vindusklasse

Prosessen for å registrere en programdefinert vindusklasse for en egendefinert kontroll er den samme som for å registrere en klasse for et vanlig vindu. Hvis du vil opprette en egendefinert kontroll, og angir navnet på Vindusklassen i funksjonen CreateWindowEx eller i en mal for dialogboksen-boksen. Hver klasse må ha et unikt navn, en tilsvarende vindusprosedyre og annen informasjon.

Som et minimum trekker vindusprosedyre kontrollen. Hvis et program bruker kontrollen slik at den informasjon om brukeren, vindusprosedyre også behandler inndatameldinger fra tastaturet og musen og sender varselmeldinger til det overordnede vinduet. I tillegg Hvis kontrollen støtter kontrollmeldinger, behandler vinduet prosedyren meldinger som er sendt til den av det overordnede vinduet eller andre vinduer. For eksempel behandle kontroller ofte meldingen WM_GETDLGCODE sendt av dialogbokser for å lede en dialogboks til å behandle inndata fra tastaturet i en gitt måte.

Index