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);
| 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. |
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.
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.
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.
Okno klasy omówienie, funkcje klasy okno, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, procedury WindowProc, WNDCLASSEX