Ta funkcja została zastąpiona przez funkcję SetWindowLongPtr. Aby napisać kod, który będzie kompatybilny zarówno z 32-bitową, jak również 64-bitową wersją systemu Windows, należy użyć wymienionej funkcji. |
Składnia
#include <windows.h>
LONG WINAPI SetWindowLong( HWND hWnd, int nIndex, LONG dwNewLong );
Argumenty
Zwracana wartość
Jeśli funkcja zakończy się prawidłowo, zwracaną wartością jest poprzednia wartość określonej 32-bitowej liczby całkowitej. Jeśli wystąpią błędy, zwracaną wartością jest zero. Aby uzyskać rozszerzone informacje o błędach, wywołaj funkcję
GetLastError. Jeśli poprzednia wartość określonej 32-bitowej liczby całkowitej jest zerem, ale funkcja zakończy się prawidłowo, zwracaną wartością jest zero, ale funkcja nie czyści ostatniej informacji o błędzie. To utrudnia określenie, czy funkcja zakończyła się prawidłowo. Aby rozwiązać ten problem, należy wyczyścić ostatnią informację o błędzie przez wywołanie funkcji
SetLastError z argumentem o wartości 0 przed wywołaniem tej funkcji. Przy takich ustawieniach błąd przy wywoływaniu tej funkcji wystąpi, gdy wartość zwracana przez funkcję
GetLastError będzie niezerowa.
Dodatkowe informacje
Określone dane okna są buforowane, więc zmiany wprowadzane przez wywołanie tej funkcji mogą nie przynosić żadnego rezultatu, dopóki nie zostanie wywołana funkcja
SetWindowPos. Jeśli jakikolwiek styl ramki okna jest zmieniany, musi zostać wywołana funkcja
SetWindowPos z flagą
SWP_FRAMECHANGED, aby dane zostały prawidłowo uaktualnione. Jeśli ta funkcja zostanie użyta z argumentem
nIndex o wartości
GWL_WNDPROC w celu zmiany procedury okna, to ta procedura musi być zgodna z minimalnymi wymaganiami dla funkcji zwrotnych
WindowProc. Jeśli ta funkcja zostanie użyta z argumentem
nIndex o wartości
DWL_MSGRESULT w celu ustawienia wartości zwracanej dla komunikatu przetwarzanego w procedurze okna dialogowego, powinna bezpośrednio po obsłużeniu komunikatu zwrócić wartość
TRUE. Inaczej, jeśli zostanie wywołana dowolna funkcja, która spowoduje przechwycenie komunikatu w procedurze dialogu, zagnieżdżony komunikat może nadpisać zwracaną wartość ustawioną przez tą funkcję. Wywołanie tej funkcji z argumentem
nIndex o wartości
GWL_WNDPROC tworzy subklasę klasy okna używanej do jego utworzenia. Program może dokonać subclassingu klasy zdefiniowanej przez system, ale nie powinien tworzyć subklasy klasy okna utworzonej przez inny proces. Ta funkcja tworzy subklasę okna poprzez zmianę procedury okna powiązanego z określoną klasą okna, powodując wywoływanie nowej procedury okna, zamiast starej. Program musi przekazać wszystkie komunikaty, które nie zostaną przechwycone przez procedurę okna do poprzedniej procedury okna przez wywołanie funkcji
CallWindowProc. To pozwala na utworzenie łańcucha procedur okien. Do zarezerwowania dodatkowej pamięci dla okna przez przypisanie niezerowej wartości do składowej
cbWndExtra struktury
WNDCLASSEX jest używana funkcja
RegisterClassEx. Nie można wywoływać tej funkcji z argumentem
nIndex o wartości
GWL_HWNDPARENT w celu zmiany rodzica okna potomnego. W tym celu należy użyć funkcji
SetParent. Jeśli okno ma ustawione style klasy
CS_CLASSDC lub
CS_OWNDC, nie należy ustawiać rozszerzonych stylów okien
WS_EX_COMPOSITED oraz
WS_EX_LAYERED. Wywołanie tej funkcji w celu ustawienia stylów Progress Bara zresetuje jego pozycję.
Wymagania
Linki zewnętrzne