Share via


SetClassLongPtrW-Funktion (winuser.h)

Ersetzt den angegebenen Wert am angegebenen Offset im zusätzlichen Klassenspeicher oder der WNDCLASSEX-Struktur für die Klasse, zu der das angegebene Fenster gehört.

Hinweis Verwenden Sie SetClassLongPtr, um Code zu schreiben, der sowohl mit 32-Bit- als auch mit 64-Bit-Windows kompatibel ist. Beim Kompilieren für 32-Bit-Windows wird SetClassLongPtr als Aufruf der SetClassLong-Funktion definiert.

 

Syntax

ULONG_PTR SetClassLongPtrW(
  [in] HWND     hWnd,
  [in] int      nIndex,
  [in] LONG_PTR dwNewLong
);

Parameter

[in] hWnd

Typ: HWND

Ein Handle für das Fenster und indirekt die Klasse, zu der das Fenster gehört.

[in] nIndex

Typ: int

Der zu ersetzende Wert. Um einen Wert im zusätzlichen Klassenspeicher festzulegen, geben Sie den positiven, nullbasierten Byteoffset des festzulegenden Werts an. Gültige Werte liegen im Bereich Null durch die Anzahl der Bytes des zusätzlichen Klassenspeichers, minus acht; Wenn Sie beispielsweise 24 oder mehr Bytes zusätzlichen Klassenspeicher angegeben haben, wäre ein Wert von 16 ein Index für die dritte ganze Zahl. Um einen anderen Wert als die WNDCLASSEX-Struktur festzulegen, geben Sie einen der folgenden Werte an.

Wert Bedeutung
GCL_CBCLSEXTRA
-20
Legt die Größe des zusätzlichen Arbeitsspeichers in Bytes fest, der der Klasse zugeordnet ist. Das Festlegen dieses Werts ändert nicht die Anzahl der zusätzlichen Bytes, die bereits zugewiesen wurden.
GCL_CBWNDEXTRA
–18
Legt die Größe des zusätzlichen Fensterspeichers in Bytes fest, der jedem Fenster in der -Klasse zugeordnet ist. Das Festlegen dieses Werts ändert nicht die Anzahl der zusätzlichen Bytes, die bereits zugewiesen wurden. Informationen zum Zugriff auf diesen Arbeitsspeicher finden Sie unter SetWindowLongPtr.
GCLP_ HBRBACKGROUND
-10
Ersetzt ein Handle durch den Hintergrundpinsel, der der -Klasse zugeordnet ist.
GCLP_HCURSOR
-12
Ersetzt ein Handle durch den Cursor, der der Klasse zugeordnet ist.
GCLP_HICON
-14
Ersetzt ein Handle durch das Symbol, das der Klasse zugeordnet ist.
GCLP_HICONSM
-34
Ruft ein Handle für das kleine Symbol ab, das der Klasse zugeordnet ist.
GCLP_HMODULE
-16
Ersetzt ein Handle durch das Modul, das die Klasse registriert hat.
GCLP_MENUNAME
-8
Ersetzt den Zeiger auf die Menünamenzeichenfolge. Die Zeichenfolge identifiziert die der -Klasse zugeordnete Menüressource.
GCL_STYLE
-26
Ersetzt die Fensterklassenstilbits.
GCLP_WNDPROC
-24
Ersetzt den Zeiger auf die Fensterprozedur, die der Klasse zugeordnet ist.

[in] dwNewLong

Typ: LONG_PTR

Der Ersetzungswert.

Rückgabewert

Typ: ULONG_PTR

Wenn die Funktion erfolgreich ist, ist der Rückgabewert der vorherige Wert des angegebenen Offsets. Wenn dies zuvor nicht festgelegt wurde, ist der Rückgabewert 0.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn Sie die Funktion SetClassLongPtr und den GCLP_WNDPROC Index verwenden, um die Fensterprozedur zu ersetzen, muss die Fensterprozedur den Richtlinien entsprechen, die in der Beschreibung der WindowProc-Rückruffunktion angegeben sind.

Beim Aufrufen von SetClassLongPtr mit dem GCLP_WNDPROC Index wird eine Unterklasse der Fensterklasse erstellt, die sich auf alle Fenster auswirkt, die anschließend mit der -Klasse erstellt wurden. Eine Anwendung kann eine Systemklasse unterklassen, sollte aber keine Unterklasse einer Fensterklasse sein, die von einem anderen Prozess erstellt wurde.

Reservieren Sie zusätzlichen Klassenspeicher, indem Sie einen nonzero-Wert im cbClsExtra-Member der WNDCLASSEX-Struktur angeben, die mit der RegisterClassEx-Funktion verwendet wird.

Verwenden Sie die SetClassLongPtr-Funktion mit Sorgfalt. Beispielsweise ist es möglich, die Hintergrundfarbe für eine Klasse mithilfe von SetClassLongPtr zu ändern. Diese Änderung ändert jedoch nicht sofort alle Fenster, die zur Klasse gehören.

Hinweis

Der winuser.h-Header definiert SetClassLongPtr als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-windowclass-l1-1-2 (eingeführt in Windows 10, Version 10.0.10240)

Siehe auch

Konzept

GetClassLongPtr

Referenz

RegisterClassEx

SetWindowLongPtr

WNDCLASSEX

Fensterklassen

WindowProc