Windows-Controls: G-Menu

Description

Version avec image de capture qui remplace celle d'octobre 2017.

Bonjour,

Un contrôle de menu permet l'organisation hiérarchique des éléments associés aux commandes et aux gestionnaires d'événements.
Dans une application Microsoft Windows typique, une barre de menus contient plusieurs boutons de menu (tels que Fichier, Edition et Fenêtre)
et chaque bouton de menu affiche un menu. Un menu contient une collection d'éléments de menu (tels que Nouveau, Ouvert et Fermé),
qui peut être étendu pour afficher des éléments de menu supplémentaires ou pour effectuer une action spécifique en cliquant dessus.

Code de création:
HWND edit;
HMENU EditMenu,SelMenu;
const enum {IdOpen=10,IdClose,IdExit,IdCopy,IdPaste,IdYes,IdNo,IdHelp,IdAbout};

void Create(HWND h) {
  HMENU m=CreateMenu();
    HMENU mm=CreatePopupMenu();
    AppendMenu(mm,MF_STRING,IdOpen,"Open");
    AppendMenu(mm,MF_STRING|MFS_DISABLED,IdClose,"Close");
    AppendMenu(mm,MF_SEPARATOR,0,0);
    AppendMenu(mm,MF_STRING,IdExit,"Exit");
  AppendMenu(m,MF_STRING|MF_POPUP,(UINT)mm,"File");
    EditMenu=CreatePopupMenu();
    AppendMenu(EditMenu,MF_STRING,IdCopy,"Copy");
    AppendMenu(EditMenu,MF_STRING,IdPaste,"Paste");
      SelMenu=CreatePopupMenu();
      AppendMenu(SelMenu,MF_STRING,IdYes,"Yes");
      AppendMenu(SelMenu,MF_STRING|MF_DISABLED,IdNo,"No");
    AppendMenu(EditMenu,MF_STRING|MF_POPUP,(UINT)SelMenu,"Select");
  AppendMenu(m,MF_STRING|MF_POPUP,(UINT)EditMenu,"Edit");
    mm=CreatePopupMenu();
    AppendMenu(mm,MF_STRING,IdHelp,"View Help");
    AppendMenu(mm,MF_SEPARATOR,0,0);
    AppendMenu(mm,MF_STRING,IdAbout,"About");
  AppendMenu(m,MF_STRING|MF_POPUP,(UINT)mm,"Help");
  SetMenu(h,m);
  edit=CreateWindow("EDIT","Windows-Controls: G-Menu"
    ,WS_BORDER|WS_CHILD|WS_VISIBLE,99,99,200,20,h,0,0,0);
};
Le décalage des instructions évoque l'arborescence des menus.

Code du traitement des messages:
int Command(HWND h,WPARAM wP,LPARAM lP) {
  switch(wP) {
  case IdOpen: SetWindowText(edit,"Open"); break;
  case IdClose: SetWindowText(edit,"Close"); break;
  case IdExit: PostQuitMessage(0); break;
  case IdCopy: SetWindowText(edit,"Copy"); break;
  case IdPaste: SetWindowText(edit,"Paste"); break;
  case IdYes: SetWindowText(edit,"Select: Yes");
    EnableMenuItem(SelMenu,IdYes,MF_DISABLED);
    EnableMenuItem(SelMenu,IdNo,MF_ENABLED);
    CheckMenuItem(EditMenu,2,MF_BYPOSITION|MF_CHECKED); break;
  case IdNo: SetWindowText(edit,"Select: No");
    EnableMenuItem(SelMenu,IdYes,MF_ENABLED);
    EnableMenuItem(SelMenu,IdNo,MF_DISABLED);
    CheckMenuItem(EditMenu,2,MF_BYPOSITION|MF_UNCHECKED); break;
  case IdHelp: SetWindowText(edit,"Help"); break;
  case IdAbout: SetWindowText(edit,"About ..."); break;
  } return 0;
};
Remarquez le cochage/décochage du menu EditMenu ainsi que l'activation/désactivation du menu SelMenu.

Quelques liens:
CodeS-SourceS: Windows-Controls: A-Boutons
CodeS-SourceS: Windows-Controls: B-Barre d'état (status bar)
CodeS-SourceS: Windows-Controls: C-TrackBar (Slider)
CodeS-SourceS: Windows-Controls: D-Combo Box
CodeS-SourceS: Windows-Controls: E-Edit (simulation console)
CodeS-SourceS: Windows-Controls: F-ToolBar (Barre d'outils)

Windows: Menus
Windows: About Menus
Windows: Using Menus

Bonne lecture …

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.