Partager via


SetClassLongPtrW, fonction (winuser.h)

Remplace la valeur spécifiée au décalage spécifié dans la mémoire de classe supplémentaire ou la structure WNDCLASSEX pour la classe à laquelle appartient la fenêtre spécifiée.

Remarque Pour écrire du code compatible avec Windows 32 bits et 64 bits, utilisez SetClassLongPtr. Lors de la compilation pour Windows 32 bits, setClassLongPtr est défini comme un appel à la fonction SetClassLong

 

Syntaxe

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

Paramètres

[in] hWnd

Type : HWND

Handle vers la fenêtre et, indirectement, classe à laquelle appartient la fenêtre.

[in] nIndex

Type : int

Valeur à remplacer. Pour définir une valeur dans la mémoire de classe supplémentaire, spécifiez le décalage d’octet positif de base zéro de la valeur à définir. Les valeurs valides sont comprises dans la plage zéro par le nombre d’octets de mémoire de classe supplémentaire, moins huit ; par exemple, si vous avez spécifié 24 octets ou plus de mémoire de classe supplémentaire, une valeur de 16 est un index du troisième entier. Pour définir une valeur autre que la structure WNDCLASSEX, spécifiez l’une des valeurs suivantes.

Valeur Signification
GCL_CBCLSEXTRA
-20
Définit la taille, en octets, de la mémoire supplémentaire associée à la classe. La définition de cette valeur ne modifie pas le nombre d’octets supplémentaires déjà alloués.
GCL_CBWNDEXTRA
-18
Définit la taille, en octets, de la mémoire de fenêtre supplémentaire associée à chaque fenêtre de la classe. La définition de cette valeur ne modifie pas le nombre d’octets supplémentaires déjà alloués. Pour plus d’informations sur l’accès à cette mémoire, consultez SetWindowLongPtr.
GCLP_ HBRBACKGROUND
-10
Remplace un handle par le pinceau d’arrière-plan associé à la classe.
GCLP_HCURSOR
-12
Remplace un handle par le curseur associé à la classe.
GCLP_HICON
-14
Remplace un handle par l’icône associée à la classe.
GCLP_HICONSM
-34
Récupère un handle sur la petite icône associée à la classe.
GCLP_HMODULE
-16
Remplace un handle par le module qui a inscrit la classe.
GCLP_MENUNAME
-8
Remplace le pointeur vers la chaîne de nom de menu. La chaîne identifie la ressource de menu associée à la classe.
GCL_STYLE
-26
Remplace les bits de style de classe de fenêtre.
GCLP_WNDPROC
-24
Remplace le pointeur vers la procédure de fenêtre associée à la classe.

[in] dwNewLong

Type : LONG_PTR

Valeur de remplacement.

Valeur de retour

Type : ULONG_PTR

Si la fonction réussit, la valeur de retour est la valeur précédente du décalage spécifié. Si cette valeur n’a pas été définie précédemment, la valeur de retour est égale à zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Si vous utilisez la fonction SetClassLongPt r et l’index GCLP_WNDPROC pour remplacer la procédure de fenêtre, la procédure de fenêtre doit être conforme aux instructions spécifiées dans la description de la fonction de rappel WindowProc.

L’appel SetClassLongPtr avec l’index GCLP_WNDPROC crée une sous-classe de la classe de fenêtre qui affecte toutes les fenêtres créées par la suite avec la classe. Une application peut sous-classer une classe système, mais ne doit pas sous-classer une classe de fenêtre créée par un autre processus.

Réservez une mémoire de classe supplémentaire en spécifiant une valeur différente de zéro dans le membre cbClsExtra de la structure WNDCLASSEX utilisée avec la fonction RegisterClassEx.

Utilisez la fonction SetClassLongPtr avec soin. Par exemple, il est possible de modifier la couleur d’arrière-plan d’une classe à l’aide de SetClassLongPtr, mais cette modification ne repeint pas immédiatement toutes les fenêtres appartenant à la classe.

Note

L’en-tête winuser.h définit SetClassLongPtr comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winuser.h (include Windows.h)
bibliothèque User32.lib
DLL User32.dll
ensemble d’API ext-ms-win-ntuser-windowclass-l1-1-2 (introduit dans Windows 10, version 10.0.10240)

Voir aussi

conceptuelle

getClassLongPtr

de référence

RegisterClassEx

setWindowLongPtr

WNDCLASSEX

classes de fenêtre

WindowProc