Mettre des images facilement dans les menus

Partagez votre expérience de PureBasic avec les autres utilisateurs.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Mettre des images facilement dans les menus

Message par nico »

C'est un code de Danilo pris sur le Forum German sur l'utilisation de l'api SetMenuItemBitmaps.

Code : Tout sélectionner

hwnd=OpenWindow(0, 0, 0, 300, 200, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Menu") 

If hwnd 
     
     CX_CMark=GetSystemMetrics_(#SM_CXMENUCHECK) 
     CY_CMark=GetSystemMetrics_(#SM_CYMENUCHECK) 
     
     If CreateImage(0, CX_CMark, CY_CMark) 
          If StartDrawing(ImageOutput()) 
               Box(0,0,CX_CMark,CY_CMark,GetSysColor_(#COLOR_MENU)) 
               Circle(CX_CMark/2,CY_CMark/2,CX_CMark/3,GetSysColor_(#COLOR_MENUTEXT)) 
               StopDrawing() 
          EndIf 
     EndIf 
     
     If CreateImage(1, CX_CMark, CY_CMark) 
          If StartDrawing(ImageOutput()) 
               Box(0,0,CX_CMark,CY_CMark,GetSysColor_(#COLOR_MENU)) 
               Circle(CX_CMark/2,CY_CMark/2,CX_CMark/3,RGB(0,0,255)) 
               StopDrawing() 
          EndIf 
     EndIf
     
     If CreateImage(2, CX_CMark, CY_CMark) 
          If StartDrawing(ImageOutput()) 
               Box(0,0,CX_CMark,CY_CMark,GetSysColor_(#COLOR_MENU)) 
               Circle(CX_CMark/2,CY_CMark/2,CX_CMark/3,RGB(255,0,0)) 
               StopDrawing() 
          EndIf 
     EndIf
     
     hMenu=CreateMenu(0, hwnd) : If hMenu 
          MenuTitle("Datei") 
          MenuItem(1, "Test") 
          OpenSubMenu("SubMenu 1") 
          MenuItem(2, "Sub1\Item1") 
          CloseSubMenu() 
          MenuItem(3,"Test 2") 
          MenuTitle("Bearbeiten") 
          MenuItem(4,"Ausschneiden") 
          MenuItem(5,"Kopieren") 
          MenuItem(6,"Einfgen") 
          
          ;SetMenuItemBitmaps_(Menu, x, #MF_BYCOMMAND, bitmap1, bitmap2) 
          ;menu: handle du menu
          ;x: id de la commande
          ;bitmap1:handle du bitmap UnChecked (affichage par défaut)
          ;bitmap1:handle du bitmap Checked   (affichage si item coché) 
          
          SetMenuItemBitmaps_(hMenu, 1, #MF_BYCOMMAND, UseImage(0), UseImage(0)) 
          SetMenuItemBitmaps_(hMenu, 2, #MF_BYCOMMAND, UseImage(1), UseImage(1)) 
          SetMenuItemBitmaps_(hMenu, 3, #MF_BYCOMMAND, UseImage(2), UseImage(2)) 
          
     EndIf 
     
     Repeat 
          Event=WaitWindowEvent() 
     Until Event=#PB_Event_CloseWindow 
     
EndIf 

End 
Dernière modification par nico le dim. 05/mars/2006 19:33, modifié 1 fois.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Pas compatible 98

Dri
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Pourtant sur le site, il dise que c'est compatible win95!
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

exportation manquante:
user32.dll (SetLayeredWindowAttributes)

Dri :-?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Ben en fait j'ai pas collé le bon code, là c'est mieux. :lol:
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Salut a tous,

Sur XP, nickel !

Ce code tombe a pic. Je désire mettre des icone dans mes menus, et je l'avais mis dans liste des demandes pour PB4. Hélas ! peut-être pour plus tard.

Pour ma part j'ai un peu modifié le code, pour chargé directement les images (uniquement en format BMP, dommage pas les ICO) avec un LOADIMAGE, puis un RESIZEIMAGE. Ca marche !

Merci beaucoup :wink:
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Ps : pour ceux qui utilise PB4 il faut replacé les USEIMAGE par IMAGE
ID

comme ceux-ci :

SetMenuItemBitmaps_(hMenu, 1, #MF_BYCOMMAND, ImageID(0), ImageID(0))

:wink:
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Par contre avec la V4 j'ai ca :

---------------------------
PureBasic
---------------------------
Ligne 9: ImageOutput(): Incorrect number of parameters.
---------------------------
OK
---------------------------
:?:
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message par Ulix »

Exact, avec PB4 l'instruction a changé, il faut mettre : ImageOutput(#image).

Mise a part cette mise a jour de l'instruction, l'exemple donné marche aussi avec PB4.

Par contre si quelqu'un sait comme utilisé directement les icones ou lieu de fichier.BMP je suis interresé...

:lol:
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Arghh, merci, c'est dans l'aide en plus, la prochaine fois je nettoyerais mes lunettes ;)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Pour les icônes, c'est un peu plus compliqué faut faire de l'ownerdraw, ce qui veut dire qu'après faut s'occuper de la gestion des menus, fini les commandes PB.

Denis a fait une Lib, le mieux, c'est de l'utiliser.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Salut à tous,

faut que je m'y remette et que j'essaye de terminer cette librairie :lol:
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Bon ça va, je suis pas le seul. :lol:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

j'ai fait une escapade du côté de VBA pour moi, je retourne à PB c'est baucoup plus simple
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Ah tiens te revoilà toi :D
Je me demandais où tu étais passé. Ca fais plaisir de savoir que tu reviens à PB, et que tu vas nous terminer cette lib :P
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Répondre