IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Le Fox Toolkit


précédentsommairesuivant

V. La création d'une barre de menus

Plusieurs objets graphiques sont nécessaires à la création d'une barre de menus : la barre elle-même, les menus, le panel de chaque menu et les items des menus. Un exemple sera plus parlant :

V-A. Code source

NotreWindow.h
Sélectionnez
class NotreWindow...
 private:
    ....
   FXMenuBar *menu_barre; 
   FXMenuTitle *menu_file, *menu_edition;
   FXMenuPane *file_pan, *edition_pan;
   FXMenuCommand *item_nouveau, *item_open, *item_close, *item_undo, *item_copy;
    ...
 };
NotreWindow.cpp
Sélectionnez
       ...
 menu_barre=new FXMenuBar(this,LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FILL_X,0,0,0,0,3,3,2,2,DEFAULT_SPACING,DEFAULT_SPACING);
       
 file_pan   =new FXMenuPane(this,0);
 edition_pan=new FXMenuPane(this,0);
 
 menu_file=new FXMenuTitle(menu_barre,"Fichier",NULL,file_pan,0);
   item_nouveau=new FXMenuCommand(file_pan,"Nouveau",NULL,this,ID_NEW,0);
   item_open   =new FXMenuCommand(file_pan,"Ouvrir" ,NULL,this,ID_OPEN,0);
   item_close  =new FXMenuCommand(file_pan,"Fermer" ,NULL,this,ID_CLOSE,0);
 
 menu_edition=new FXMenuTitle(menu_barre,"Edition",NULL,edition_pan,0);
   item_undo   =new FXMenuCommand(edition_pan,"Annuler",NULL,this,ID_UNDO,0);
   item_copy   =new FXMenuCommand(edition_pan,"Copier" ,NULL,this,ID_COPY,0);
      ...

Le code source n'est pas complet, il ne contient que les morceaux de code qu'il faut rajouter dans les codes précédents. La structure de la fenêtre étant sensiblement la même.

V-B. Explications

 
Sélectionnez
menu_barre = new FXMenuBar(this,LAYOUT_TOP|LAYOUT_LEFT|LAYOUT_FILL_X,0,0,0,0,3,3,2,2,DEFAULT_SPACING,DEFAULT_SPACING);

Cette instruction crée une barre de menus. Le premier argument est un pointeur sur l'objet dans lequel la barre devra se trouver, ici, la fenêtre. L'autre argument contient les drapeaux définissant l'aspect de la barre.

 
Sélectionnez
file_pan = new FXMenuPane(this,0);

Cette instruction crée un panel pour un menu déroulant. Cela va donc créer un espace graphique à dérouler. On remarquera la présence de l'argument this, qui pointe sur l'objet contenant le panel, ici, la fenêtre.

 
Sélectionnez
menu_file = new FXMenuTitle(menu_barre,"Fichier",NULL,file_pan,0);

Cette instruction crée un menu déroulant dans la barre de menus, avec un intitulé « Fichier », sans icône, associé au panel file_pan, sans option particulière.
Il ne reste plus qu'à remplir notre menu avec les items souhaités :

 
Sélectionnez
item_nouveau = new FXMenuCommand(file_pan,"Nouveau",NULL,this,ID_NEW,0);

Nous créons ici un item associé au panel file_pan, intitulé « Nouveau » . Cet item n'a pas d'icône (NULL). Il enverra ses messages à this, ici, la fenêtre. Les messages qu'il enverra seront du type ID_NEW. Le dernier argument correspond aux drapeaux de positionnement et d'allure de l'item.

Il ne reste plus maintenant qu'à déclarer les messages ID_NEW, ID_CLOSE… dans le type énuméré de la classe NotreWindow, à les déclarer dans la macro FXDEFMAP et à implémenter les méthodes que vous souhaitez leur associer.

D'un point de vue esthétique, il est possible de rajouter des séparateurs entre les items d'un menu :

 
Sélectionnez
FXMenuSeparator *sep1 = new FXMenuSeparator(file_pan,0);
Image non disponible
Une barre de menus

précédentsommairesuivant

Copyright © 2005 khayyam Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.