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);
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. |
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.
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.
&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.
Übersicht über Windows-Klassen, Klasse Fensterfunktionen, CallWindowProc, GetWindowLong, RegisterClassEx, SetParent, WindowProc, WNDCLASSEX