SetWindowLong

Die Funktion SetWindowLong ändert ein Attribut des angegebenen Fensters. Die Funktion setzt auch einen (langen) 32-Bit-Wert am angegebenen Offset in den extra Fenster Arbeitsspeicher eines Fensters.

LONG SetWindowLong) HWND  hWnd, / / handle des FenstersintnIndex, / / Offset Wert einzustellenLangeDwNewLong / / neuen Wert);
 

Parameter

hWnd
Handle für das Fenster und indirekt, der Klasse, das Fenster gehört.
nIndex
Gibt den nullbasierten Offset auf den Wert festgelegt werden. Gültige Werte liegen im Bereich von 0 (null) durch die Anzahl der Bytes des Arbeitsspeichers extra Fenster, abzüglich 4; zum Beispiel, wenn Sie 12 oder mehr Bytes zusätzlicher Speicher angegeben, wäre ein Wert von 8 einen Index für die dritte 32-Bit-Ganzzahl. Um einen anderen Wert festzulegen, geben Sie einen der folgenden Werte:
Wert Aktion
GWL_EXSTYLE Legt einen neuen erweiterten Fensterstil.
GWL_STYLE Legt einen neue Fensterstil.
GWL_WNDPROC Legt eine neue Adresse für die Fensterprozedur.
GWL_HINSTANCE Legt einen neue Anwendung Instanz-handle.
GWL_ID Legt einen neuen Bezeichner des Fensters.
GWL_USERDATA Legt den 32-Bit-Wert mit dem Fenster verknüpfte. Jedes Fenster hat einen entsprechenden 32-Bit-Wert zur Verwendung durch die Anwendung, die das Fenster erstellt.

Die folgenden Werte sind auch verfügbar, wenn der hWnd -Parameter ein Dialogfeld identifiziert:
Wert Aktion
DWL_DLGPROC Legt die neue Adresse der Dialogfeld im Feld Prozedur.
DWL_MSGRESULT Legt den Rückgabewert einer Nachricht in das Dialogfeld im Feld Prozedur verarbeitet.
DWL_USER Legt neue zusätzliche Informationen, die für die Anwendung, wie z. B. Handles oder Zeiger privat ist.

dwNewLong
Gibt den Ersatzwert.

Rückgabewerte

Wenn die Funktion erfolgreich ist, ist der Rückgabewert der vorherige Wert der angegebenen 32-Bit-Vorzeichen.

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (null). Rufen Sie Fehlerinformationen verlängert bekommen, GetLastError.

Wenn der vorherige Wert der angegebenen 32-Bit-Vorzeichen 0 (null ist), und die Funktion erfolgreich ist, der Rückgabewert ist 0 (null), aber die Funktion nicht klar, die letzte Fehlerinformationen. Dies erschwert es, Erfolg oder Misserfolg entscheiden. Um dies zu beheben, sollten Sie die letzte Fehlerinformationen deaktivieren, durch Aufrufen von SetLastError(0) vor dem Aufruf von SetWindowLong. Dann werden Fehler bei der Funktion angegeben werden, durch ein Rückgabewert von 0 (null) und GetLastError Ergebnis, das ungleich NULL ist.

Bemerkungen

Die SetWindowLong Funktion schlägt fehl, wenn das Fenster durch den hWnd -Parameter angegebene nicht zu demselben Prozess wie der aufrufende Thread gehört.

Bestimmte Fenster Daten werden zwischengespeichert, damit Änderungen, die Sie mit SetWindowLong nicht wirksam werden, bis Sie die SetWindowPos -Funktion aufrufen,.

Wenn Sie SetWindowLong mit dem GWL_WNDPROC-Index verwenden, um die Fensterprozedur zu ersetzen, muss die Fensterprozedur zu den Leitlinien, die in der Beschreibung der Rückruffunktion WindowProc angegeben entsprechen.

Wenn Sie SetWindowLong mit dem Index DWL_MSGRESULT verwenden, um den Rückgabewert für eine Nachricht verarbeitet durch eine Dialogfeld-Prozedur festlegen, sollten Sie direkt TRUE danach zurück. Andernfalls wenn Sie eine beliebige Funktion, die Ergebnisse in der Dialogfeld-Prozedur eine Fenstermeldung empfangen aufrufen, konnte die geschachtelte Fenstermeldung den Rückgabewert überschreiben, die, den Sie mit DWL_MSGRESULT festlegen.

SetWindowLong mit dem Index GWL_WNDPROC aufrufen, erstellt eine Unterklasse von Window-Klasse verwendet, um das Fenster zu erstellen. Eine Anwendung können eine Unterklasse einer Systemklasse, aber sollte keine Unterklasse von einem anderen Prozess eine Fensterklasse erstellt. Die SetWindowLong Funktion erstellt die Unterklasse Fenster indem Sie ändern die Fensterprozedur verknüpft mit einer bestimmten Fensterklasse, dass das System die neue Fensterprozedur statt der vorherigen aufrufen. Eine Anwendung muss nicht durch die neue Fensterprozedur an die vorherigen Fensterprozedur durch Aufrufen von CallWindowProcverarbeitet Nachrichten übergeben. Dies ermöglicht der Anwendung, erstellen Sie eine Kette von Fensterprozeduren.

Reservieren Sie extra Fenster Arbeitsspeicher, indem Sie angeben einen Wert ungleich NULL in den CbWndExtra der WNDCLASSEX -Struktur verwendet, mit der RegisterClassEx -Funktion.

SetWindowLong dürfen nicht mit dem GWL_HWNDPARENT Index zu ändern, das übergeordnete Element eines untergeordneten Fensters aufgerufen werden. Verwenden Sie stattdessen die Funktion SetParent.

Windows CE: Der nIndex -Parameter muss ein Vielfaches von 4 Bytes sein.

Nichtlinearen Zugriff wird nicht unterstützt.

Die folgenden nIndex -Parameter-Werte werden nicht unterstützt.:

GWL_HINSTANCE

GWL_HWNDPARENT

GWL_USERDATA

Windows CE-Versionen 2.0 und höher unterstützen den DWL_DLGPROC-Wert im Parameter nIndex , Windows CE 1.0 jedoch nicht.

QuickInfo

&Nbsp; Windows NT: Version 3.1 oder höher erforderlich.
Windows:Erfordert Windows 95 oder höher.
Windows CE:Version 1.0 oder höher benötigt.
Header:In winuser.h deklarierten.
Importieren Bibliothek:Verwenden Sie user32.lib.
Unicode:Als Unicode und ANSI-Versionen unter Windows NT implementiert.

Siehe auch

Übersicht über Windows-Klassen, Klasse Fensterfunktionen, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX

Index