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

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message 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
Dernière modification par GallyHC le mar. 25/juin/2013 21:43, modifié 2 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

J'aime bien aussi ;) merci
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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

Message par venom »

Merci du code pratique :P






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message par GallyHC »

Bonjour,

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

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Répondre