Funksjonen CallWindowProc sender meldingsinformasjon til den angitte vindusprosedyre.
() Ikke hente LRESULT CallWindowProc WNDPROC lpPrevWndFunc, / / peker til forrige prosedyreHWNDhWnd, / / håndtere til vinduetUINTMsg, // messageWPARAMwParam, / / message først parameterenLPARAMlParam / / sekund message-parameter);
Hvis denne verdien hentes ved å kalle funksjonen GetWindowLong med nIndex -parameteren angitt til GWL_WNDPROC eller DWL_DLGPROC, er det faktisk enten adressen til et vindu, eller dialogboksen boksen prosedyre, eller en referanse som representerer denne adressen.
Returverdien angir et resultat av behandling av meldingen, og avhenger av meldingen som er sendt.
Bruk CallWindowProc -funksjonen for vinduet i underklasse. Vanligvis dele alle vinduer med samme klasse én vindusprosedyre. En underklasse er et vindu eller et sett med Vinduer med samme klasse får meldinger er fanget opp og behandlet av en annen vindusprosedyre for (eller prosedyrer) før de sendes til prosedyren vinduet klassen.
Funksjonen SetWindowLong oppretter underklassen ved å endre vindusprosedyre som er forbundet med et bestemt vindu, noe som gjør systemet kalle den nye vinduet prosedyren i stedet for den tidligere. Et program må passere noen meldinger som ikke er behandlet av nye vinduet til den forrige prosedyren i vinduet, ved å kalle CallWindowProc. Dette gjør at programmet til å opprette en kjede av vinduet prosedyrer.
Hvis strengt er definert, lpPrevWndFunc parameteren har datatypen WNDPROC. WNDPROC -typen er deklarert som følger
IKKE HENTE LRESULT (TILBAKERINGING * WNDPROC) (HWND, UINT, WPARAM, LPARAM)
Hvis strengt ikke er definert, lpPrevWndFunc parameteren har datatypen FARPROC. FARPROC -typen er deklarert som følger
int (langt WINAPI * FARPROC))
I c angir den FARPROC erklæringen en tilbakeringingsfunksjonen som har en uspesifisert parameterliste. I C++, men angir listen tom parameter i erklæringen at en funksjon har ingen parametere. Denne subtile forskjellen kan bryte uforsiktig koden. Følgende er en måte å håndtere denne situasjonen:
#ifdef strenge WNDPROC MyWindowProcedure # annet FARPROC MyWindowProcedure #endif... ikke hente lResult = CallWindowProc (MyWindowProcedure,...)
Hvis du vil ha mer informasjon om funksjoner som er deklarert med tomme argumentlister, kan du se The c ++ programmeringsspråk, andre utgave av Bjarne Stroustrup.
Windows NT: Funksjonen CallWindowProc håndterer Unicode til ANSI-konvertering. Du kan ikke dra nytte av denne konverteringen Hvis du kaller prosedyren vinduet direkte.
nbsp; Windows &NT: krever versjon 3.1 eller senere.
Windows:Krever Windows 95 eller senere.
Windows CE:Krever versjon 1.0 eller senere.
Topptekst:Deklarert i winuser.h.
Importere biblioteket:Bruk user32.lib.
Unicode:Implementert som Unicode- og ANSI-versjoner på Windows NT.
Vinduet prosedyrer oversikt, vinduet prosedyren funksjoner, GetWindowLong, SetClassLong, SetWindowLong