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.
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

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 
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.

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
