SetWindowLongPtrW, fonction (winuser.h)
Modifie un attribut de la fenêtre spécifiée. La fonction définit également une valeur au décalage spécifié dans la mémoire supplémentaire de la fenêtre.
Syntaxe
LONG_PTR SetWindowLongPtrW(
[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. La fonction SetWindowLongPtr échoue si le processus propriétaire de la fenêtre spécifiée par le paramètre hWnd est à un privilège de processus supérieur dans la hiérarchie UIPI que le processus dans lequel réside le thread appelant.
Windows XP/2000 : La fonction SetWindowLongPtr échoue si la fenêtre spécifiée par le paramètre hWnd n’appartient pas au même processus que le thread appelant.
[in] nIndex
Type : int
Décalage 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 fenêtre supplémentaire, moins la taille d’un LONG_PTR. Pour définir une autre valeur, spécifiez l’une des valeurs suivantes.
Les valeurs suivantes sont également disponibles lorsque le paramètre hWnd identifie une boîte de dialogue.
[in] dwNewLong
Type : LONG_PTR
Valeur de remplacement.
Valeur de retour
Type : LONG_PTR
Si la fonction réussit, la valeur de retour est la valeur précédente du décalage spécifié.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Si la valeur précédente est égale à zéro et que la fonction réussit, la valeur de retour est égale à zéro, mais la fonction ne efface pas les dernières informations d’erreur. Pour déterminer la réussite ou l’échec, désactivez les dernières informations d’erreur en appelant SetLastError avec 0, puis appelez SetWindowLongPtr. L’échec de la fonction est indiqué par une valeur de retour égale à zéro et une GetLastError résultat différent de zéro.
Remarques
Certaines données de fenêtre sont mises en cache. Par conséquent, les modifications que vous apportez à l’aide
Si vous utilisez SetWindowLongPtr par l’index GWLP_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.
Si vous utilisez SetWindowLongPtr avec l’index DWLP_MSGRESULT pour définir la valeur de retour d’un message traité par une procédure de boîte de dialogue, la procédure de boîte de dialogue doit retourner TRUE directement après. Sinon, si vous appelez une fonction qui entraîne la réception d’un message de fenêtre dans votre boîte de dialogue, le message de fenêtre imbriqué peut remplacer la valeur de retour que vous avez définie à l’aide de DWLP_MSGRESULT.
L’appel SetWindowLongPtr avec l’index GWLP_WNDPROC crée une sous-classe de la classe de fenêtre utilisée pour créer la fenêtre. 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. La fonction SetWindowLongPtr crée la sous-classe de fenêtre en modifiant la procédure de fenêtre associée à une classe de fenêtre particulière, ce qui entraîne l’appel de la nouvelle procédure de fenêtre au lieu de la procédure précédente. Une application doit transmettre les messages non traités par la nouvelle procédure de fenêtre à la procédure de fenêtre précédente en appelant CallWindowProc. Cela permet à l’application de créer une chaîne de procédures de fenêtre.
Réservez une mémoire de fenêtre supplémentaire en spécifiant une valeur différente de zéro dans le membre cbWndExtra de la structure WNDCLASSEX utilisée avec la fonction RegisterClassEx.
N’appelez pas SetWindowLongPtr avec l’index GWLP_HWNDPARENT pour modifier le parent d’une fenêtre enfant. Utilisez plutôt la fonction SetParent.
Si la fenêtre a un style de classe de CS_CLASSDC ou de CS_PARENTDC, ne définissez pas les styles de fenêtre étendus WS_EX_COMPOSITED ou WS_EX_LAYERED.
L’appel SetWindowLongPtr pour définir le style sur une barre de progression réinitialise sa position.
Note
L’en-tête winuser.h définit SetWindowLongPtr 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-0 (introduit dans Windows 8) |
Voir aussi
conceptuelle
de référence