SetWindowLong

Funksjonen SetWindowLong endrer et attributt for det angitte vinduet. Funksjonen angir også en 32-biters (lang) verdi på den angitte forskyvningen i ekstra vinduet minnet av et vindu.

Lang SetWindowLong) HWND  hWnd, / / håndtere-vinduetIntnIndex, / / forskyvning av verdi for å angiLangdwNewLong / / ny verdi);
 

Parametere

hWnd
Håndtere til vinduet og indirekte, klassen som vinduet tilhører.
nIndex
Angir nullbasert forskyvningen til verdien som skal angis. Gyldige verdier er i området null gjennom antall byte med minne for ekstra vindu, minus 4; for eksempel, hvis du har angitt 12 eller flere byte med ekstra minne, ville en verdi på 8 være en indeks til tredje 32-biters heltall. Hvis du vil angi en annen verdi, angir du en av følgende verdier:
Verdi Handling
GWL_EXSTYLE Angir en ny utvidet Vindustype.
GWL_STYLE Angir en ny vindu-stil.
GWL_WNDPROC Angir en ny adresse for vindusprosedyre.
GWL_HINSTANCE Angir det nye programmet forekomst håndtaket.
GWL_ID Angir en ny identifikator i vinduet.
GWL_USERDATA Angir 32-biters verdien forbundet med vinduet. Hvert vindu har en tilsvarende 32-biters verdi beregnet på bruk av programmet som opprettet vinduet.

Følgende verdier er også tilgjengelige når parameteren hWnd identifiserer en dialogboks:
Verdi Handling
DWL_DLGPROC Angir den nye adressen i dialogboksen boksen fremgangsmåten.
DWL_MSGRESULT Angir verdien som returneres av en melding som er behandlet i dialogboksen boksen prosedyre.
DWL_USER Sett ny ekstra informasjon som er privat til programmet, for eksempel håndtak eller pekere.

dwNewLong
Angir erstatningsverdi.

Returverdier

Hvis funksjonen er vellykket, er verdien som returneres av forrige verdi i det angitte 32-biters heltallet.

Hvis funksjonen mislykkes, er verdien som returneres Null. Til å vise utvidet feilinformasjon, kan du ringe GetLastError.

Hvis den forrige verdien av det angitte 32-biters heltallet er null, og funksjonen lykkes, returverdien er null, men funksjonen sletter ikke siste feilinformasjonen. Dette gjør det vanskelig å fastslå suksess eller fiasko. For å håndtere dette, bør du fjerne siste feilinformasjonen ved å kalle SetLastError(0) før du kaller SetWindowLong. Deretter, feil på funksjonen angis med en returverdi for null og et GetLastError resultat som er ikke-null.

Merknader

Funksjonen SetWindowLong mislykkes hvis vinduet som er angitt av parameteren hWnd ikke tilhører samme prosess som kallende tråden.

Visse vinduet data er bufret, slik at endringer du har gjort med SetWindowLong ikke vil tre i kraft før du kaller funksjonen SetWindowPos.

Hvis du bruker SetWindowLong med GWL_WNDPROC-indeksen for å erstatte vindusprosedyre, vinduet prosedyren må være i overensstemmelse med retningslinjene som er angitt i beskrivelsen av tilbakeringingsfunksjonen WindowProc.

Hvis du bruker SetWindowLong med DWL_MSGRESULT-indeks for å angi returverdien for en melding som behandles av en prosedyre i dialogboksen, skal du returnere SANN direkte etterpå. Ellers, hvis du kaller en funksjon som resulterer i i dialogboksen-prosedyren, mottak av en melding i vinduet, nestede vinduet meldingen kan overskrive returverdien du angir ved hjelp av DWL_MSGRESULT.

Kaller SetWindowLong med GWL_WNDPROC-indeks, oppretter du en underklasse av vindusklasse som er brukt til å opprette vinduet. Et program kan underklassen som en systemklasse, men bør ikke underklasse en vindusklasse opprettet av en annen prosess. Funksjonen SetWindowLong oppretter vinduet underklassen ved å endre vindusprosedyre som er forbundet med en bestemt vindusklasse, 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.

Reservere ekstra vinduet minne ved å angi en annen verdi enn null i cbWndExtra -medlem av WNDCLASSEX -strukturen som brukes sammen med RegisterClassEx -funksjonen.

Du må ikke kalle SetWindowLong med GWL_HWNDPARENT-indeksen du vil endre overordnet i et underordnet vindu. Bruk i stedet SetParent -funksjonen.

Windows CE: Parameteren nIndex må være et multiplum av 4 byte.

Ikke-justert access støttes ikke.

Følgende nIndex parameterverdiene støttes ikke:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

Windows CE versjon 2.0 og senere støtter DWL_DLGPROC-verdien i nIndex -parameteren, men ikke i Windows CE 1.0.

Hurtiginformasjon

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.

Se også

Vinduet klasser oversikt, vinduet klassen funksjoner, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX

Index