icones dans les menus

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

icones dans les menus

Message 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:
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message par Dräc »

Tu trouveras ton bonheur ici : Notpad 2004
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Il y a aussi des exemples plus simple sur Pureanet.
Pingtix
Messages : 159
Inscription : mer. 03/nov./2004 15:30

Message par Pingtix »

Euh... c'est quoi Pureanet ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

www.purearea.net :wink: codearchiv quoi
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Pingtix
Messages : 159
Inscription : mer. 03/nov./2004 15:30

Message par Pingtix »

Ah ok ! Je me disais aussi...
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Oui désolé, j'ai contracté involontairement. :lol:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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 :)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Répondre