Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une fenêtre reçoit ce message lorsque l’utilisateur choisit une commande dans le menu Fenêtre (anciennement le menu système ou contrôle) ou lorsque l’utilisateur choisit le bouton Agrandir, réduire le bouton, restaurer ou fermer le bouton.
#define WM_SYSCOMMAND 0x0112
Example
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
Exemple de exemples Windows Classic sur GitHub.
Paramètres
-
wParam
-
Type de commande système demandée. Les quatre bits de bas ordre du paramètre wParam sont utilisés en interne par le système. Les bits 4-15 contiennent un code de commande qui peut être l’une des valeurs suivantes.
Valeur Meaning - SC_CLOSE
- 0xF060
Ferme la fenêtre. - SC_CONTEXTHELP
- 0xF180
Modifie le curseur en point d’interrogation avec un pointeur. Si l’utilisateur clique ensuite sur un contrôle dans la boîte de dialogue, le contrôle reçoit un message WM_HELP . - SC_DEFAULT
- 0xF160
Sélectionne l’élément par défaut ; l’utilisateur a double-cliqué sur le menu de la fenêtre. - SC_HOTKEY
- 0xF150
Active la fenêtre associée à la clé chaude spécifiée par l’application. Le paramètre lParam identifie la fenêtre à activer. - SC_HSCROLL
- 0xF080
Fait défiler horizontalement. - SC_KEYMENU
- 0xF100
Récupère le menu de la 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 dotés de fonctionnalités d’économie d’énergie, telles qu’un ordinateur personnel alimenté par batterie.
Le paramètre lParam peut avoir les valeurs suivantes :- -1 (l’affichage est activé)
- 1 (l’affichage va à faible puissance)
- 2 (l’affichage est en cours d’arrêt)
- SC_MOUSEMENU
- 0xF090
Récupère le menu de la 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
Se déplace vers la fenêtre précédente. - SC_RESTORE
- 0xF120
Restaure la fenêtre à sa position et sa taille normales. - SC_SCREENSAVE
- 0xF140
Exécute l’application d’économiseur d’écran spécifiée dans la section [démarrage] 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. Si le code de commande est SC_SCREENSAVE, les indicateurs suivants sont disponibles dans les quatre bits de faible ordre :
Flag Meaning - SCF_ISSECURE
- 0x0001
L’économiseur d’écran est sécurisé. -
lParam
-
Le mot de bas ordre spécifie la position horizontale du curseur, dans les coordonnées de l’écran, si une commande de menu fenêtre est choisie avec la souris. Sinon, ce paramètre n’est pas utilisé.
Le mot à ordre élevé spécifie la position verticale du curseur, dans les coordonnées de l’écran, si une commande de menu fenêtre est choisie avec la souris. Ce paramètre est 1 si la commande est choisie à l’aide d’un accélérateur système, ou zéro si elle utilise un mnémonique.
Valeur retournée
Une application doit retourner zéro si elle traite ce message.
Remarques
Pour obtenir les coordonnées de position dans les coordonnées de l’é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 de menu fenêtre pour les actions prédéfinies spécifiées dans le tableau précédent.
Dans WM_SYSCOMMAND messages, les quatre bits de bas ordre du paramètre wParam sont utilisés en interne par le système. Pour obtenir le code de commande à partir de la valeur wParam , une application doit combiner la valeur 0xFFF0 avec la valeur wParam à l’aide de l’opérateur AND au niveau du bit, comme illustré dans l’exemple ci-dessus.
Les éléments de menu d’un menu fenêtre peuvent être modifiés à l’aide des fonctions GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem et SetMenuItemInfo . Les applications qui modifient le menu fenêtre doivent traiter WM_SYSCOMMAND messages.
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 transmis à 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’effectue une application avec la notification SC_SCREENSAVE , même si elle ne parvient pas à la transmettre à DefWindowProc.
Les touches d’accélérateur 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 WM_COMMAND .
Si wParam est SC_KEYMENU, lParam contient le code caractère de la clé utilisée avec la touche ALT pour afficher le menu contextuel. Par exemple, en appuyant sur Alt+F pour afficher la fenêtre contextuelle Fichier, un WM_SYSCOMMANDavec wParam égal à SC_KEYMENU et lParam égal à « f ».
Spécifications
| Requirement | 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] |
| Header |
|
Voir aussi
-
Référence
-
conceptuelle