_Message WM SYSCOMMAND

Une fenêtre reçoit ce message lorsque l’utilisateur choisit une commande dans le menu fenêtre (anciennement appelé système ou menu contrôle) ou lorsque l’utilisateur choisit le bouton Agrandir, le bouton réduire, le bouton restaurer ou le bouton Fermer.

#define WM_SYSCOMMAND                   0x0112

Exemple

 case WM_SYSCOMMAND:
        if (wParam == SC_CLOSE)
        {
            EndDialog (hDlg, TRUE);
            return(TRUE);
        }
        break;

exemple de Windows exemples classiques sur GitHub.

Paramètres

wParam

Type de commande système demandée. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
SC_CLOSE
0xF060
Ferme la fenêtre.
SC_CONTEXTHELP
0xF180
Remplace le curseur par un point d’interrogation par un pointeur. Si l’utilisateur clique ensuite sur un contrôle dans la boîte de dialogue, le contrôle reçoit un message de WM_HELP .
SC_DEFAULT
0xF160
Sélectionne l’élément par défaut ; l’utilisateur a double-cliqué dans le menu fenêtre.
SC_HOTKEY
0xF150
Active la fenêtre associée à la touche d’accès rapide spécifiée par l’application. Le paramètre lParam identifie la fenêtre à activer.
SC_HSCROLL
0xF080
Fait défiler horizontalement.
SCF_ISSECURE
0x00000001
Indique si l’économiseur d’écran est sécurisé.
SC_KEYMENU
0xF100
Récupère le menu fenêtre à la suite d’une séquence de touches. Pour plus d'informations, consultez la section Notes.
SC_MAXIMIZE
0xF030
Agrandit la fenêtre.
SC_MINIMIZE
0xF020
Réduit la fenêtre.
SC_MONITORPOWER
0xF170
Définit l’état de l’affichage. Cette commande prend en charge les appareils qui ont des fonctionnalités d’économie d’énergie, comme un ordinateur personnel alimenté par batterie.
Le paramètre lParam peut avoir les valeurs suivantes :
  • -1 (l’affichage est sous tension)
  • 1 (l’affichage est faible puissance)
  • 2 (l’affichage est en cours d’arrêt)
SC_MOUSEMENU
0xF090
Récupère le menu fenêtre à la suite d’un clic de souris.
SC_MOVE
0xF010
Déplace la fenêtre.
SC_NEXTWINDOW
0xF040
Passe à la fenêtre suivante.
SC_PREVWINDOW
0xF050
Passe à la fenêtre précédente.
SC_RESTORE
0xF120
Rétablit la position et la taille normales de la fenêtre.
SC_SCREENSAVE
0xF140
Exécute l’application d’écran de veille spécifiée dans la section [boot] du fichier System.ini.
SC_SIZE
0xF000
Dimensionne la fenêtre.
SC_TASKLIST
0xF130
Active le menu Démarrer .
SC_VSCROLL
0xF070
Fait défiler verticalement.

lParam

Le mot de poids faible spécifie la position horizontale du curseur, en coordonnées d’écran, si une commande de menu fenêtre est sélectionnée avec la souris. Dans le cas contraire, ce paramètre n’est pas utilisé.

Le mot de poids fort spécifie la position verticale du curseur, en coordonnées d’écran, si une commande de menu fenêtre est sélectionnée avec la souris. Ce paramètre a la valeur 1 si la commande est choisie à l’aide d’un accélérateur système, ou zéro si vous utilisez un mnémonique.

Valeur de retour

Une application doit retourner zéro si elle traite ce message.

Notes

Pour obtenir les coordonnées de position en coordonnées d’écran, utilisez le code suivant :

xPos = GET_X_LPARAM(lParam);    // horizontal position 
yPos = GET_Y_LPARAM(lParam);    // vertical position

La fonction DefWindowProc exécute la demande du menu fenêtre pour les actions prédéfinies spécifiées dans le tableau précédent.

Dans les messages WM _ SYSCOMMAND , les quatre bits de poids faible du paramètre wParam sont utilisés en interne par le système. Pour obtenir le résultat correct lors du test de la valeur de wParam, une application doit combiner la valeur 0xFFF0 avec la valeur wParam à l’aide de l’opérateur de bits and.

Les éléments de menu d’un menu fenêtre peuvent être modifiés à l’aide des fonctions GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItemet SetMenuItemInfo . Les applications qui modifient le menu fenêtre doivent traiter les messages WM _ SYSCOMMAND .

Une application peut exécuter n’importe quelle commande système à tout moment en transmettant un message WM _ SYSCOMMAND à DefWindowProc. Tous les messages WM _ SYSCOMMAND non gérés par l’application doivent être passés à DefWindowProc. Toutes les valeurs de commande ajoutées par une application doivent être traitées par l’application et ne peuvent pas être passées à DefWindowProc.

Si la protection par mot de passe est activée par la stratégie, l’économiseur d’écran est démarré indépendamment de ce qu’une application utilise avec la notification SC _ SCREENSAVE même si ne parvient pas à la passer à DefWindowProc.

Les touches d’accès rapide définies pour choisir des éléments dans le menu fenêtre sont traduites en messages WM _ SYSCOMMAND ; toutes les autres séquences de touches d’accélérateur sont traduites en messages de _ commande WM .

Si le wParam est le _ keymenu SC, lParam contient le code de caractère de la clé utilisée avec la touche Alt pour afficher le menu contextuel. Par exemple, si vous appuyez sur ALT + F pour afficher la fenêtre contextuelle du fichier, un _ SYSCOMMAND WM avec wParam égal à SC _ keymenu et lParam est égal à’F'.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel - [Applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server - [Applications de bureau uniquement]
En-tête
Winuser. h (inclure Windows. h)

Voir aussi

Référence

AppendMenu

DefWindowProc

Obtient _ X _ lParam

Obtient _ le _ lParam Y

GetSystemMenu

InsertMenu

ModifyMenu

WM, _ commande

Conceptuel

Raccourcis clavier