Page 1 sur 1

[Windows] Justification à droite d'un menu système.

Publié : lun. 24/juin/2013 11:26
par GallyHC
Bonjour,

Pour faire un peu d'esthétique sur un menu (Windows) d'une fenêtre, j'avais besoin de positionné le menu "Langue" a droite. Alors j'ai fait une petite fonction, je ne sais pas si ce sera utile et même si cela n'a pas encore été fait?

Une image est plus parlante :
Image

Voila le code :

Code : Tout sélectionner

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure menu_rightjustify(hWnd.i, stext.s, impos.i)
;
  Define itmp.i
  Define MnuInfo.MENUITEMINFO
  Define mnuH.i = GetMenu_(hWnd)
  
  With MnuInfo
    \cbSize     = SizeOf(MnuInfo)
    \fMask      = #MIIM_TYPE
    \fType      = #MFT_RIGHTJUSTIFY | #MFT_STRING
    \cch        = Len(stext)
    \dwTypeData = @stext
  EndWith
  SetMenuItemInfo_(mnuH, impos, #True, MnuInfo)
  DrawMenuBar_(hWnd)

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Enumeration
  #Window_main
  #MnuMenu_0
EndEnumeration

Define event.l

Define hWnd.l = OpenWindow(#Window_main, 0, 0, 800, 600, "Right Menu", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
  If CreateImageMenu(#MnuMenu_0, WindowID(#Window_main))
    MenuTitle("&Fichier")                               ; menu principal 0.
      MenuItem(1, "Nouveau", 0)
      MenuItem(2, "Ouvrir...",0)
      MenuBar()
      MenuItem(3, "Enregistrer", 0)
      MenuItem(4, "Enregistrer Sous...", 0)
      MenuBar()
      MenuItem(5, "Préférences...", 0)
      MenuBar()
      MenuItem(6, "Quittez le Logiciel", 0)
    MenuTitle("&Menu XXX")                              ; menu principal 1.
    MenuTitle("&Menu XXX")                              ; menu principal 2.
      MenuItem(7, "Texte du menu", 0)
      MenuBar()
      MenuItem(8, "Texte du menu", 0)
    MenuTitle("&Menu XXX")                              ; menu principal 3.
      MenuItem(9, "Texte du menu", 0)
      MenuBar()
      MenuItem(10, "Texte du menu", 0)
    MenuTitle("&Aide")                                  ; menu principal 4.
      MenuItem(100, "Mode d'emploi logiciel" + #TAB$ + "F1", 0)
      MenuItem(101, "Support Technique", 0)
      MenuItem(102, "Mise a Jour du logiciel", 0)
      MenuBar()
      MenuItem(103, "Activation du Logiciel", 0)   
      MenuItem(104, "Faire une Donnation", 0)   
      MenuBar()
      MenuItem(105, "A propos de...", 0)
    MenuTitle("&Langue")                                ; menu principal 5.
      MenuItem(106, "Francais", 0)
      MenuItem(107, "Allemand", 0)
  EndIf
  
  ;
  ; JUSTIFICATION DU MENU
  ; hWnd  = Adresse de la fenêtre.
  ; stext = Texte dans le menu.
  ; impos = Position du menu principal.
  ;
  menu_rightjustify(hWnd, "&Langue", 5)
  ;
  ; JUSTIFICATION DU MENU
  ; hWnd  = Adresse de la fenêtre.
  ; stext = Texte dans le menu.
  ; impos = Position du menu principal.
  ;
  
  Repeat
    event   = WaitWindowEvent(10)
  Until event = #PB_Event_CloseWindow
EndIf
Cordialement,
GallyHC

Re: [Windows] Justification à droite d'un menu système.

Publié : mar. 25/juin/2013 8:14
par Micoute
Bonjour GallyHC, je trouve ton code très esthétique, ça peut même être très utile, par exemple dans un logiciel où l'utilisateur peut modifier tous les paramètres de son choix, mais qui veut revenir au réglage "usine", dans ce cas on pourrait mettre dans ton menu justifié, tous les paramètres par défaut, ce genre de menu existe surement déjà, car la programmation n'en n'est pas à son balbutiement !

En tous cas, merci pour l'idée.

Re: [Windows] Justification à droite d'un menu système.

Publié : mar. 25/juin/2013 9:55
par Ar-S
J'aime bien aussi ;) merci

Re: [Windows] Justification à droite d'un menu système.

Publié : mar. 25/juin/2013 11:32
par GallyHC
Bonjour,

Je na vais pas sur le forum anglais (surement a tord), mais bon mon anglais est télément ........ que voila lolll. Au moin ce sera sur le forum Français aussi.

Cordialement,
GallyHC

Re: [Windows] Justification à droite d'un menu système.

Publié : mar. 25/juin/2013 19:17
par venom
Merci du code pratique :P






@++

Re: [Windows] Justification à droite d'un menu système.

Publié : mar. 25/juin/2013 21:43
par GallyHC
Bonjour,

Petite modification de la procédure pour la rendre plus lisible et surtout retiré ce qui été inutile.

Cordialement,
GallyHC