SetWindowLong

Funcția SetWindowLong modifică un atribut din fereastra specificate. Funcția stabilește, de asemenea, o valoare (lung) 32-bit la decalajul specificate în memoria fereastra suplimentare de o fereastră.

(SetWindowLong) lung HWND  hWnd, / / ocupa de fereastraintnIndex, / / offset de valoare pentru a setaLungdwNewLong / / new valoarea);
 

Parametrii

hWnd
Mâner pentru fereastra și, indirect, clasa de care aparține fereastra.
nIndex
Specifică offset zero-based la valoarea de a fi stabilit. Valorile valide sunt în intervalul zero prin numărul de bytes de memorie suplimentar fereastra, minus 4; de exemplu, dacă ați specificat 12 sau mai multe bytes de memorie suplimentar, o valoare de 8 ar fi un index la ter?e întreg pe 32 de biți. Pentru a seta orice altă valoare, specificați una din următoarele valori:
Valoarea Acțiune
GWL_EXSTYLE Setează un nou extins stil fereastra.
GWL_STYLE Setează un nou stil fereastra.
GWL_WNDPROC Setează o adresă nouă pentru procedura fereastra.
GWL_HINSTANCE Setează o nouă cerere instanță mâner.
GWL_ID Setează un nou identificator a ferestrei.
GWL_USERDATA Setează valoarea de 32-bit asociate cu fereastra. Fiecare fereastră are o valoare de 32-bit corespunzătoare destinate utilizării prin aplicarea create fereastra.

Următoarele valori, de asemenea, sunt disponibile atunci când parametrul hWnd identifică o casetă de dialog:
Valoarea Acțiune
DWL_DLGPROC Setează adresa nouă a procedurii de caseta de dialog.
DWL_MSGRESULT Setează valoarea returnată de un mesaj prelucrate în procedura de caseta de dialog.
DWL_USER Seturi de noi informații suplimentare este privat la cerere, cum ar fi mânerele sau indicii.

dwNewLong
Specifică valoarea de înlocuire.

Valorile întroarse

Dacă funcția reușește, valoarea returnată este valoarea anterioară a specificat întreg pe 32 de biți.

Dacă funcția nu reușește, valoarea returnată este zero. Pentru a obține extins informa?ii eroare, apel GetLastError.

Dacă valoarea anterioară a specificat întreg pe 32 de biți este zero, și funcția reușește, valoarea returnată este zero, dar funcția nu ultima eroare informa?ii clare. Acest lucru este dificil pentru a determina succesul sau eșecul. Să se ocupe de acest lucru, ar trebui să anulați ultima eroare informațiile de apel SetLastError(0) înainte de asteptare SetWindowLong. Apoi, funcția eșec va fi indicat printr-o valoare returnată de zero și un rezultat GetLastError care este diferită de zero.

Observații

Funcția SetWindowLong nu reușește dacă fereastra specificat de parametrul hWnd nu apar?in acela?i proces ca firul de asteptare.

Anumite date fereastră este stocat în cache, astfel încât modificările folosind SetWindowLong nu vor avea efect până când apelați funcția SetWindowPos.

Dacă utilizați SetWindowLong cu indicele GWL_WNDPROC pentru a înlocui procedura fereastra, procedura fereastra trebuie să fie conforme cu liniile directoare specificate în descrierea funcția de apel invers WindowProc.

Dacă utilizați SetWindowLong cu indicele DWL_MSGRESULT pentru a seta valoarea de retur pentru un mesaj prelucrate printr-o procedură de dialog, trebuie să reveniți adevărat direct după aceea. În caz contrar, dacă orice funcție care conduce la dumneavoastră procedura de dialog primește un mesaj fereastră, mesaj fereastră imbricate ar putea suprascrie valoarea returnată setați utilizând DWL_MSGRESULT.

Apelarea SetWindowLong cu indicele GWL_WNDPROC creează o subclasă de clasa fereastra utilizat pentru a crea fereastra. Cererea poate subclasă o clasă de sistem, dar ar trebui să nu subclasă o clasă fereastra creat de un alt proces. Funcția SetWindowLong creează subclasă fereastra prin modificarea procedurii fereastra asociată cu o clasă de fereastra special, cauzând sistemul pentru a apela Noua procedură fereastra în locul celei precedente. Cererea trebuie să treacă orice mesaje nu prelucrate de către Noua procedură fereastra la procedura precedentă fereastra prin apelarea CallWindowProc. Acest lucru permite aplicarea pentru a crea un lan? de fereastra procedurile.

Fereastra suplimentare de memorie de rezervă specificând o valoare nenul în membre cbWndExtra structurii WNDCLASSEX utilizate cu funcția RegisterClassEx.

Trebuie să nu apelați SetWindowLong cu indicele GWL_HWNDPARENT pentru a modifica mamă de o fereastră de copil. În schimb, utilizați funcția SetParent.

Windows CE: Parametrul nIndex trebuie să fie un multiplu de 4 octeți.

Nealiniată acces nu este acceptată.

Următorul nIndex parametru valorile nu sunt acceptate:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

Versiunile Windows CE 2.0 și mai târziu acceptă valoarea DWL_DLGPROC în parametrul nIndex , dar Windows CE 1.0 nu.

QuickInfo

nbsp; Windows &NT: necesită versiunea 3.1 sau mai târziu.
Windows:Necesită Windows 95 sau o versiune ulterioară.
Windows CE:Necesită versiunea 1.0 sau mai târziu.
Antet:A declarat în winuser.h.
Import Biblioteca:Utilizarea user32.lib.
Unicode:Pus în aplicare ca Unicode și ANSI versiuni Windows NT.

A se vedea, de asemenea

Fereastra clase de prezentare, fereastra clasa funcții, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX

Index