PeekMessageA, fonction (winuser.h)
Répartit les messages non mis en file d’attente entrantes, vérifie la file d’attente des messages de thread pour un message publié et récupère le message (le cas échéant).
Syntaxe
BOOL PeekMessageA(
[out] LPMSG lpMsg,
[in, optional] HWND hWnd,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[in] UINT wRemoveMsg
);
Paramètres
[out] lpMsg
Type : LPMSG
Pointeur vers une structure MSG qui reçoit des informations de message.
[in, optional] hWnd
Type : HWND
Handle vers la fenêtre dont les messages doivent être récupérés. La fenêtre doit appartenir au thread actuel.
Si hWnd est NULL, PeekMessage récupère les messages pour n’importe quelle fenêtre qui appartient au thread actif, ainsi que les messages de la file d’attente de messages du thread actuel dont valeur hwnd est NULL (voir la structure MSG). Par conséquent, si hWnd est NULL, les messages de fenêtre et les messages de thread sont traités.
Si hWnd est -1, PeekMessage récupère uniquement les messages de la file d’attente de messages du thread actuel dont la valeur hwnd est NULL , autrement dit, les messages de thread publiés par postMessage (lorsque le paramètre hWnd est NULL) ou PostThreadMessage.
[in] wMsgFilterMin
Type : uiNT
Valeur du premier message dans la plage de messages à examiner. Utilisez WM_KEYFIRST (0x0100) pour spécifier le premier message clavier ou WM_MOUSEFIRST (0x0200) pour spécifier le premier message de la souris.
Si wMsgFilterMin et wMsgFilterMax sont tous deux zéro, PeekMessage retourne tous les messages disponibles (autrement dit, aucun filtrage de plage n’est effectué).
[in] wMsgFilterMax
Type : uiNT
Valeur du dernier message dans la plage de messages à examiner. Utilisez WM_KEYLAST pour spécifier le dernier message clavier ou WM_MOUSELAST pour spécifier le dernier message de la souris.
Si wMsgFilterMin et wMsgFilterMax sont tous deux zéro, PeekMessage retourne tous les messages disponibles (autrement dit, aucun filtrage de plage n’est effectué).
[in] wRemoveMsg
Type : uiNT
Spécifie la façon dont les messages doivent être gérés. Ce paramètre peut être une ou plusieurs des valeurs suivantes.
Valeur | Signification |
---|---|
|
Les messages ne sont pas supprimés de la file d’attente après le traitement par PeekMessage. |
|
Les messages sont supprimés de la file d’attente après le traitement par PeekMessage. |
|
Empêche le système de libérer tout thread qui attend que l’appelant soit inactif (voir WaitForInputIdle).
Combinez cette valeur avec PM_NOREMOVE ou PM_REMOVE. |
Par défaut, tous les types de messages sont traités. Pour spécifier que seul un message doit être traité, spécifiez une ou plusieurs des valeurs suivantes.
Valeur de retour
Type : BOOL
Si un message est disponible, la valeur de retour est différente de zéro.
Si aucun message n’est disponible, la valeur de retour est égale à zéro.
Remarques
PeekMessage récupère les messages associés à la fenêtre identifiée par le paramètre hWnd ou l’un de ses enfants, comme spécifié par la fonction IsChild et dans la plage de valeurs de message données par les paramètres wMsgFilterMin et wMsgFilterMax. Notez qu’une application ne peut utiliser que le mot faible dans les paramètres wMsgFilterMin et wMsgFilterMax ; le mot élevé est réservé au système.
Notez que PeekMessage récupère toujours les messages WM_QUIT, quelles que soient les valeurs que vous spécifiez pour wMsgFilterMin et wMsgFilterMax.
Au cours de cet appel, le système répartit (
- Messages envoyés
- Messages publiés
- Messages d’entrée (matériel) et événements internes système
- Messages envoyés (à nouveau)
- messages WM_PAINT
- messages WM_TIMER
La fonction PeekMessage ne supprime normalement pas WM_PAINT messages de la file d’attente.
WM_PAINT messages restent dans la file d’attente jusqu’à ce qu’ils soient traités. Toutefois, si un message
Si une fenêtre de niveau supérieur cesse de répondre aux messages pendant plus de plusieurs secondes, le système considère que la fenêtre ne répond pas et la remplace par une fenêtre fantôme qui a le même ordre z, emplacement, taille et attributs visuels. Cela permet à l’utilisateur de le déplacer, de le redimensionner ou même de fermer l’application. Toutefois, il s’agit des seules actions disponibles, car l’application ne répond pas réellement. Lorsqu’une application est déboguée, le système ne génère pas de fenêtre fantôme.
virtualisation d'ppp
Cette API ne participe pas à la virtualisation DPI. La sortie est en mode de la fenêtre ciblée par le message. Le thread appelant n’est pas pris en compte.Exemples
Pour obtenir un exemple, consultez Examen d’une file d’attente de messages.
Note
L’en-tête winuser.h définit PeekMessage 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-message-l1-1-0 (introduit dans Windows 8) |
Voir aussi
conceptuelle
messages et files d’attente de messages
autres ressources
de référence