SetWindowLong

Funkcja SetWindowLong zmiany atrybutu określonego okna. Funkcja również ustawia wartość (długa) 32-bitowych na określone przesunięcie na do pamięci dodatkowe okna okna.

(SetWindowLong) LONG HWND  hWnd, / / uchwyt oknaintnIndex, / / przesunięcia wartości, aby ustawićDługiedwNewLong / / nowe wartości);
 

Parametry

hWnd
Dojście do okna i, pośrednio, klasę, do której należy okna.
nIndex
Określa przesunięcie względem zera wartość należy ustawić. Prawidłowymi wartościami są wartości z zakresu zera poprzez liczba bajtów pamięci dodatkowe okna, minus 4; na przykład jeśli określono 12 lub więcej bajtów dodatkowa pamięć, wartość 8 byłby indeks do trzeciego 32-bitową liczbą całkowitą. Aby ustawić inną wartość, określ jedną z następujących wartości:
Wartość Działania
GWL_EXSTYLE Ustawia nowy przedłużony styl okna.
GWL_STYLE Ustawia nowy styl okna.
GWL_WNDPROC Ustawia nowy adres procedury okna.
GWL_HINSTANCE Ustawia nowy uchwyt wystąpienia aplikacji.
GWL_ID Ustawia nowy identyfikator okna.
GWL_USERDATA Ustawia wartość 32-bitowe, skojarzone z okna. Każde okno ma odpowiednią wartość 32-bitowe, przeznaczone do wykorzystania przez aplikację, która utworzyła okna.

Następujące wartości są również dostępne, gdy parametr hWnd identyfikuje okno dialogowe:
Wartość Działania
DWL_DLGPROC Ustawia nowy adres procedury pole dialogowe.
DWL_MSGRESULT Ustawia wartość zwrócona przez wiadomość przetwarzane w procedurze pole dialogowe.
DWL_USER Ustawia nowy dodatkowe informacje, że prywatne dla aplikacji, takich jak uchwyty lub wskaźniki.

dwNewLong
Określa wartość zastąpienia.

Zwraca wartości

Jeśli funkcja, wartość zwracany jest poprzednią wartość określonego 32-bitowe liczby całkowite.

Jeśli funkcja zawiedzie, wartość zwracany jest równa zero. Aby uzyskać rozszerzonych informacji o błędach, należy wywołać GetLastError.

Jeśli poprzednią wartość określonego 32-bitowa liczba całkowita wynosi zero, a funkcja powiedzie się, wartość zwracany jest równa zero, ale funkcja nie spowoduje wyczyszczenia ostatniej informacji o błędzie. Dzięki temu trudno określić, sukces lub niepowodzenie. Aby radzić sobie z tym, należy wyczyścić ostatniej informacji o błędzie przez wywołanie SetLastError(0) przed wywołaniem metody SetWindowLong. Następnie funkcja awarii zostanie wskazany przez wartość zwracany zera i wyniku GetLastError , która jest różna od zera.

Uwagi

Funkcja SetWindowLong nie powiedzie się, jeśli okno określonej przez parametr hWnd nie należą do tego samego procesu co wywołujący wątku.

Niektóre dane okno jest buforowany, więc zmiany wprowadzone przy użyciu SetWindowLong nie odniesie skutku, dopóki nie zostanie wywołana funkcja SetWindowPos.

Jeśli używasz SetWindowLong z indeksem GWL_WNDPROC aby zastąpić procedurę okna, procedurę okna muszą być zgodne z wytycznymi podanymi w opisie funkcji wywołania zwrotnego procedury WindowProc.

Jeśli używasz SetWindowLong z indeksem DWL_MSGRESULT na wartość zwracany dla wiadomości przetwarzanej przez procedurę okna dialogowego, można powinien zwracać wartość PRAWDA bezpośrednio potem. W przeciwnym wypadku jeśli wywołanie funkcji, która skutkuje procedury okna dialogowego odbierania wiadomości okno wiadomości zagnieżdżonych okien może zastąpić wartość zwracany, ustawione przy użyciu DWL_MSGRESULT.

Wywołanie SetWindowLong z indeksem GWL_WNDPROC tworzy podklasę klasy okno, używany do tworzenia okna. Aplikacja może podklasę klasy system, ale powinna nie podklasę klasy okno utworzone przez inny proces. Funkcja SetWindowLong tworzy podklasę okno zmieniając procedurę okna skojarzona z klasą danego okna, powodując system, aby wywołać nową procedurę okna zamiast poprzedni. Aplikacja musi przekazać komunikaty nie są przetwarzane przez nową procedurę okna do poprzedniej procedury okna przez wywołanie CallWindowProc. To umożliwia aplikacji utworzyć łańcuch procedur okna.

Rezerwa pamięci dodatkowe okna określając wartość różną od zera w członek cbWndExtra struktury WNDCLASSEX używane w funkcji RegisterClassEx.

Nie należy wywołać SetWindowLong z indeksem GWL_HWNDPARENT, aby zmienić nadrzędnego okna podrzędnego. Zamiast tego użyj funkcji SetParent.

Systemu Windows CE: Parametr nIndex musi być wielokrotnością liczby 4 bajty.

Odwołań do niewyrównanych dostępu nie jest obsługiwane.

Następujące wartości parametru nIndex nie są obsługiwane:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

Windows CE w wersji 2.0 i później obsługuje wartości DWL_DLGPROC w parametrze nIndex , ale system Windows CE 1.0 nie.

Skrócone informacje

nbsp; Windows &NT: wymagana wersja 3.1 lub nowsza.
Systemu Windows:Wymaga systemu Windows 95 lub nowszego.
Systemu Windows CE:Wymaga wersja 1.0 lub nowsza.
Nagłówka:Zadeklarowane w pliku winuser.h.
Importowanie biblioteki:Należy użyć user32.lib.
Unicode:Implementowane jako wersje Unicode i ANSI w systemie Windows NT.

Zobacz też

Okno klasy omówienie, funkcje klasy okno, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, procedury WindowProc, WNDCLASSEX

Index