Page 1 sur 1

icones dans les menus

Publié : ven. 08/avr./2005 11:08
par Dr. Dri
Salut ^^

je voudrais (encore et toujours) mettre des icones 16*16 dans mes menus... Mais je n'aime pas (mais alors pas du tout ^^) la solution des cases à cocher... (d'ailleurs sous mon windows c'est du 13*13)

C'est à force d'utiliser openoffice que je me suis rendu compte qu'on pouvait bien avoir une icône ET cocher le menu.

Image
http://books.evc-cit.info/figures/ooo.ess.0303.png

Je vais tenter (ca va pas etre évident) de regarder dans les sources d'openoffice windows mais si y'en a qui ont déjà des pistes...

Dri :mad:

Publié : ven. 08/avr./2005 11:25
par Dräc
Tu trouveras ton bonheur ici : Notpad 2004

Publié : ven. 08/avr./2005 11:31
par nico
Il y a aussi des exemples plus simple sur Pureanet.

Publié : ven. 08/avr./2005 12:08
par Pingtix
Euh... c'est quoi Pureanet ?

Publié : ven. 08/avr./2005 13:31
par Le Soldat Inconnu
www.purearea.net :wink: codearchiv quoi

Publié : ven. 08/avr./2005 15:58
par Pingtix
Ah ok ! Je me disais aussi...

Publié : ven. 08/avr./2005 16:09
par nico
Oui désolé, j'ai contracté involontairement. :lol:

Publié : ven. 08/avr./2005 16:38
par Dr. Dri
Merci beaucoup

pour purearea, tu pensais à codearchive ?
les solutions proposées sont plutot bidouille bidouille
c'est pour ca ke je ne les utilise pas...

En tout cas avec l'api ModifyMenu_() j'ai de quoi faire maintenant... Je testerai demain soir ;)

Dri :)

Publié : ven. 08/avr./2005 16:58
par Anonyme2
Tiens, j'ai retrouvé un code que j'avais posté il y a déjà bien longtemps
Mets tes icônes perso pour les tests.

Code : Tout sélectionner

; constantes 
#index                   =  0
#Fenetre_principale      = 1;#index  : #index = #index + 1
#MonImage                = 2;#index  : #index = #index + 1
#MonImageCocher          = 3;#index  : #index = #index + 1
#MENU_Copier             = 4;#index  : #index = #index + 1
#MENU_Coller             = 5;#index  : #index = #index + 1
#MENU_Cocher             = 6;#index  : #index = #index + 1
#MENU_DeCocher           = 7;#index  : #index = #index + 1
#Menu                    = 8;#index  : #index = #index + 1

#MF_BYCOMMAND            = 0
#MF_BYPOSITION           = $400
#SM_CXMENUCHECK          = 71
#SM_CYMENUCHECK          = 72



; Variable globale
Global MenuIdentificateurWIndows.l

;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/

Procedure AfficheIconeMenu(WIndowsMenuID,MenuId.l, ImageNormale.l, ImageCocher.l)

; WIndowsMenuID est le Handle du menu c'est à dire le numéro attribué par Windows au menu crée
; on récupère ce Handle lorsque l'on crée le menu;
; j'ai utilisé ceci : MenuIdentificateurWIndows = CreateMenu(#Menu, WindowID(#Fenetre_principale)) 

; MenuId est l'identificateur statique de l'élément du menu ou l'on veut afficher l'image
; pour cet exemple #MENU_Copier

; ImageNormale est l'image qui s'affichera en mode non coché (car on peut cocher un menu
; soit avec un espèce de v ou avec un petit rond plein ou dans le cas d'un menu avec une
; imagge, l'image en mode cochée sera différente de celle en mode non coché

;  ImageCocher est l'image qui s'affichera en coché 

  SetMenuItemBitmaps_(WIndowsMenuID,MenuId, #MF_BYCOMMAND, ImageNormale, ImageCocher)

EndProcedure 

;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/


If OpenWindow(#Fenetre_principale,100,100,500,300,#PB_Window_SystemMenu," Essai de Menus avec images")

   ;  creation d'un menu

;; -------------------- menu Fichier --------------------------

; récupère le Handle du Menu
MenuIdentificateurWIndows = CreateMenu(#Menu, WindowID(#Fenetre_principale))  

; teste que la création du menu a réussi, c'est-à-dire que createmenu retourne 0 si le menu
; n'a pas pu être crée
  If MenuIdentificateurWIndows 
  MenuTitle("Fichier")
    MenuItem(#MENU_Copier, "Copier")
    MenuItem(#MENU_Coller, "Coller")
    MenuBar()
    MenuItem(#MENU_Cocher, "Cocher le menu Copier avec l'image correspondante")
    MenuBar()
    MenuItem(#MENU_DeCocher, "Décocher le menu Copier avec l'image correspondante")

;; ------------------------------------------------------------
EndIf 

; on charge les images qui vont s'afficher à coté du menu copier en mode coché/décoché
       Resultat.l  = LoadImage(#MonImage      , "C:\Program Files\Purebasic\Forum francais\B05_Cut.bmp")
       Resultat2.l = LoadImage(#MonImageCocher, "C:\Program Files\Purebasic\Forum francais\B08_Delete.bmp")
    
         ; teste d'abord si les images ont bien été chargées
      If resultat And Resultat2

;        on récupère la taille max en X et en Y que l'on pourra afficher dans le menu
;        sur mon ordi j'avais une image max de 13 pixels par 13 pixels
;        on utilise l'API GetSystemMetrics avec le paramètre #SM_CXMENUCHECK et SM_CYMENUCHECK
;        pour y arriver

         TailleX.l = GetSystemMetrics_(#SM_CXMENUCHECK)

         TailleY.l = GetSystemMetrics_(#SM_CYMENUCHECK)
         
;        teste que les valeurs ne sont pas nulles car on va redimensionner l'image pour 
;        qu'elle ait la taille correcte

         If TailleX And TailleY   

         EndIf    
;         ici on appelle la procédure qui va cocher le menu copier {AfficheIconeMenu()]
         AfficheIconeMenu(MenuIdentificateurWIndows,#MENU_Copier,UseImage(#MonImage) ,UseImage(#MonImageCocher))
      EndIf     


EndIf



;;  Boucle d'évènement de PB

  Repeat 

     Select WaitWindowEvent()

       Case #PB_EventCloseWindow   ; teste si la croix en haut à droite a été enfoncée
         QuitterLeProg = 1          ; si oui on quitte

       Case  #PB_Event_Menu         ; on récupère les événement générés par les menus
             Select EventGadgetID()
                Case #MENU_Cocher   ; si l'utilisateur a sélectionné le menu cocher l'image ...
                                     ; alors on affiche l'image en mode coché
                SetMenuItemState(#MENU, #MENU_Copier, 1) 

                Case #MENU_DeCocher   ; si l'utilisateur a sélectionné le menu décocher l'image ...
                                      ; alors on affiche l'image en mode decoché
                SetMenuItemState(#MENU, #MENU_Copier, 0) 
             EndSelect

     EndSelect   
  Until QuitterLeProg 

End

Publié : sam. 09/avr./2005 9:24
par Dr. Dri
Denis a écrit :Tiens, j'ai retrouvé un code que j'avais posté il y a déjà bien longtemps
Mets tes icônes perso pour les tests.
C'est justement la solution que je ne voulais pas. Parce que si on met une icone de cette facon on ne peut pas faire cohabiter icone et encoche...

Dri

Publié : sam. 09/avr./2005 9:53
par Anonyme2
Dr. Dri a écrit :
Denis a écrit :Tiens, j'ai retrouvé un code que j'avais posté il y a déjà bien longtemps
Mets tes icônes perso pour les tests.
C'est justement la solution que je ne voulais pas. Parce que si on met une icone de cette facon on ne peut pas faire cohabiter icone et encoche...

Dri
Bon ben tant pis :D