Grafiken in Kontextmenü Elementen (CreatePopupImageMenu)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
alen
Beiträge: 107
Registriert: 09.04.2007 17:38
Computerausstattung: Main Hardware: AMD Ryzen 5 1600 - 6 Core / Gigabyte B450 Aorus Pro / Sapphire RX580 8GB
PB 5.61 and earlier @ Manjaro Linux XFCE x64/ Fedora Linux Cinnamon x64 / Windows 10 x64 on various Hardware Platforms
Wohnort: Duisburg
Kontaktdaten:

Grafiken in Kontextmenü Elementen (CreatePopupImageMenu)

Beitrag von alen »

Hallo Zusammen,

ich breche mir gerade einen ab am Thema "CreatePopupImageMenu". Ich würde gerne für jeden Punkt im PopUp Menü eine Grafik benutzen.

Im speziellen geht es um diesen Teil des Codes wo man einem MenuItem eine ImageID mitgeben kann.
Versuche ich das, dann sagt mir der Debugger "das angegebnene #Image ist nicht initialisiert".

Code: Alles auswählen

...
  If CreatePopupImageMenu(#ContextPopUpMenu1)
    MenuItem(#ContextItem1, "Rechtsrum", ImageID(#IconRotateLeft))
    MenuItem(#ContextItem2, "Linksrum", ImageID(#IconRotateRight))
  EndIf  
...
Nehme ich das ganze ohne ImageID() dann passiert nix. Keine Anzeige der Grafik aber auch keine Fehlermeldung.
Kann mir hier mal jemand einen Schubs geben. Sehe den Fehler einfach nicht.

Danke für jegliche Hinweise.

Grüße
Alen

Hier der gesamte Code an dem ich spiele:

Code: Alles auswählen

Enumeration
  #MainWindow
  
  ;- Contextmenü 1
  #ContextPopUpMenu1
  #ContextItem1
  #ContextItem2
  #ContextItem3
  
  ; Context Menu Images
  #IconRotateRight
  #IconRotateLeft 
EndEnumeration

style.l = #PB_Window_ScreenCentered | #PB_Window_SystemMenu

If OpenWindow(#MainWindow, 0, 0, 200, 150, "Context Test",style) 
  size_of_rot_left_img.l  = ?EndRotateLeftImage - ?StartRotateLeftImage
  CatchImage(#IconRotateLeft, ?StartRotateLeftImage, size_of_rot_left_img)
  
  size_of_rot_right_img.l = ?EndRotateRightImage - ?StartRotateRightImage
  CatchImage(#IconRotateRight, ?StartRotateRightImage, size_of_rot_right_img)
  
  If CreatePopupImageMenu(#ContextPopUpMenu1)
    MenuItem(#ContextItem1, "Rechtsrum", #IconRotateLeft)
    MenuItem(#ContextItem2, "Linksrum", #IconRotateRight)
  EndIf  
EndIf


Repeat
  Select WaitWindowEvent()
    Case #WM_RButtonDown
      DisplayPopupMenu(#ContextPopUpMenu1, WindowID(#MainWindow))
    Case #PB_Event_Menu
      Select EventMenu()
        Case #ContextItem1 : Debug "Rotate Right"
        Case #ContextItem2 : Debug "Rotate Left"
      EndSelect
    Case #PB_Event_CloseWindow
      Quit = 1
  EndSelect
Until Quit = 1



DataSection
  StartRotateLeftImage:
  Data.l $474E5089,$0A1A0A0D,$0D000000,$52444849,$10000000,$10000000,$00000608,$FFF31F00,$00000061,$4D416704,$AF000041,$8A0537C8
  Data.l $000000E9,$58457419,$666F5374,$72617774,$64410065,$2065626F,$67616D49,$61655265,$C9717964,$00003C65,$4449F201,$CB385441
  Data.l $4FEF93B5,$C6147152,$07F83BF9,$AE7345B2,$56987EB5,$44379868,$2918690C,$5746E525,$DC8CE898,$943BD415,$A1791818,$C5D8040B
  Data.l $8BD69612,$4E456CDA,$B7269CC9,$FDD58455,$57D3D867,$6441BE5A,$BCE2F5D3,$CF3E7B3A,$91CE73D9,$A61D9001,$6005FF64,$FEE99ACB
  Data.l $E5929BE5,$96FA0F7D,$36BF308C,$7A57A648,$60602ABA,$B6DCB6ED,$3E7A2BDA,$E059228F,$480920B1,$F4459AFF,$CFDC23EB,$ACF0C00C
  Data.l $7A7CEC5D,$60115E45,$8E7F6225,$C494A2C5,$A91476DC,$DF3C719F,$9DF6218E,$C79E6CC3,$B43B3BC8,$4F7116D1,$97A57580,$F064DC9E
  Data.l $575FF7E2,$44C61F21,$F2D701D6,$1E5FC230,$882DF622,$B2C49908,$812D0B78,$E019740B,$2524C66E,$3F0821F2,$F75B92F8,$95D8AE82
  Data.l $92D7B2D2,$38D5EC6D,$9CDE9C55,$C3F44842,$C9A2759D,$032A4E7B,$41BDBDF4,$AE638DC6,$E56B8510,$B5E6BA1E,$269EBFEC,$9C5072AC
  Data.l $F3E9AA12,$D1EB7A50,$328D3EE8,$049A4900,$33B92917,$05E84199,$75A02EF5,$6BAA8946,$4BD4BD34,$411796DC,$E72E07D1,$E5C9F683
  Data.l $7371FAA2,$C977A76A,$9E8B88DF,$6017D8B3,$83D0774C,$24F0164B,$20481DB0,$D27700F7,$35F668DD,$E03047A0,$6713A27A,$EFB0279C
  Data.l $9412E81D,$41637F68,$F703CB60,$0DDE13BA,$31F59E16,$C0B93FB8,$F1D031AE,$521BA86D,$134022A0,$60A9C951,$379E6893,$8C30F982
  Data.l $147092C9,$E0471FE3,$9DA0755A,$76DC70A3,$994F5514,$A4934D24,$2763F50B,$43A98A71,$CD0D4847,$D7112B4C,$54CF40E0,$85063F6B
  Data.l $FE0706B5,$91FF4546,$03FC6B8A,$EABCD20E,$C97CBAB0,$00000000,$444E4549,$826042AE
  EndRotateLeftImage:
  
  StartRotateRightImage:
  Data.l $474E5089,$0A1A0A0D,$0D000000,$52444849,$10000000,$10000000,$00000608,$FFF31F00,$00000061,$4D416704,$AF000041,$8A0537C8
  Data.l $000000E9,$58457419,$666F5374,$72617774,$64410065,$2065626F,$67616D49,$61655265,$C9717964,$00003C65,$4449EC01,$CB385441
  Data.l $4EE993B5,$8514515A,$C0DE0E79,$D6AB4438,$114E0D46,$88894AA7,$35E8138A,$9D42B958,$2F1880D1,$45694410,$1044416D,$D440301C
  Data.l $8C1D89B4,$D2A238A9,$F6DA25B4,$DE590CBE,$8A313440,$9C7F1B1A,$6FAF675F,$DECEBD9D,$FFAC002C,$0127AC39,$D9040228,$3BA12DB9
  Data.l $BA4335BE,$63E200D9,$135E2D1D,$BA02F792,$8AD8DAF6,$E190D69D,$99F70D58,$85DA3E05,$D84EBFD5,$B8319A7E,$A5BA85D5,$85EAA157
  Data.l $805C760A,$4E9B119C,$3769F829,$F06DCF16,$F2C799FC,$DFF61DB9,$2D8670D3,$0DDAFA18,$7424ADBE,$BDFE402B,$5507D495,$B98BFEF0
  Data.l $8C56C2BA,$6CD09406,$E3FAC3F7,$66BFEC1D,$A4BCCB30,$9282DFC3,$06F27CC9,$A625B640,$8CF7E11D,$DC5A23AB,$444413E4,$E3553E1E
  Data.l $E6AAA4AE,$13E623CB,$7AC74C23,$28C302E8,$37D2E632,$8DCFD200,$20893E20,$A341AF59,$0AD10057,$C779795F,$37A972B3,$3C98ED1B
  Data.l $38428B19,$F7B817BA,$97AE851B,$53654557,$4FCC9485,$C5A83C60,$6C8521D8,$00DDC64D,$E7F06926,$1713114A,$9C4D8A78,$0D576E88
  Data.l $CA12AECD,$3E78DD2F,$05C74A94,$E8159C08,$DAF0275C,$39A94127,$F54B2D1F,$428E1C30,$B501A07F,$85B546A7,$C97D6787,$8100ADE4
  Data.l $35B21CA3,$80D5E982,$C61EA089,$83860A23,$FA77A811,$0D0AB119,$7AD2210E,$E7714293,$85CB3780,$C4C62BD4,$BAE63691,$DBED731F
  Data.l $43EAA394,$AC9C5465,$39DF6048,$79B7DCCA,$A2D77668,$CE4429DE,$54B22648,$481F4869,$49ED4B39,$0BBC1F24,$B5D66D1C,$8DB51FA4
  Data.l $020FD24C,$69F4005C,$D4C539BB,$0000151F,$45490000,$42AE444E
  Data.b $60,$82
  EndRotateRightImage:
EndDataSection
---
Main Hardware: AMD Ryzen 5 1600 - 6 Core / Asus B350M-A / Nvidia GTX650
PB 5.61 and earlier @ Manjaro Linux XFCE x64/ Fedora Linux Cinnamon x64 / Windows 10 x64
on various Hardware Platforms (Notebook and Desktop)
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Grafiken in Kontextmenü Elementen (CreatePopupImageMenu)

Beitrag von Kiffi »

Hallo Alen,
alen hat geschrieben:Hier der gesamte Code an dem ich spiele: [...]
2 Sachen:

* UsePNGImageDecoder() fehlt und
* CatchImage() gibt einen Wert zurück, den Du in MenuItem angeben musst:

Code: Alles auswählen

[...]
size_of_rot_left_img.l  = ?EndRotateLeftImage - ?StartRotateLeftImage
IconRotateLeft = CatchImage(#IconRotateLeft, ?StartRotateLeftImage, size_of_rot_left_img)
  
size_of_rot_right_img.l = ?EndRotateRightImage - ?StartRotateRightImage
IconRotateRight = CatchImage(#IconRotateRight, ?StartRotateRightImage, size_of_rot_right_img)
    
If CreatePopupImageMenu(#ContextPopUpMenu1)
  MenuItem(#ContextItem1, "Rechtsrum", IconRotateLeft)
  MenuItem(#ContextItem2, "Linksrum", IconRotateRight)
EndIf  
[...]
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
alen
Beiträge: 107
Registriert: 09.04.2007 17:38
Computerausstattung: Main Hardware: AMD Ryzen 5 1600 - 6 Core / Gigabyte B450 Aorus Pro / Sapphire RX580 8GB
PB 5.61 and earlier @ Manjaro Linux XFCE x64/ Fedora Linux Cinnamon x64 / Windows 10 x64 on various Hardware Platforms
Wohnort: Duisburg
Kontaktdaten:

Re: Grafiken in Kontextmenü Elementen (CreatePopupImageMenu)

Beitrag von alen »

Hallo Kiffi,

manchmal hat man ein Brett vorm Kopp. Beides gemacht und jetzt klappt es auch.

Müsste der Debugger nicht meckern wenn man das "UsePNGImageDecoder()" vergisst ?

Ich danke Dir, bin wieder ein Stück weiter. :allright:

Grüße
Alen
Kiffi hat geschrieben:Hallo Alen,
2 Sachen:

* UsePNGImageDecoder() fehlt und
* CatchImage() gibt einen Wert zurück, den Du in MenuItem angeben musst:
---
Main Hardware: AMD Ryzen 5 1600 - 6 Core / Asus B350M-A / Nvidia GTX650
PB 5.61 and earlier @ Manjaro Linux XFCE x64/ Fedora Linux Cinnamon x64 / Windows 10 x64
on various Hardware Platforms (Notebook and Desktop)
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Grafiken in Kontextmenü Elementen (CreatePopupImageMenu)

Beitrag von Kiffi »

alen hat geschrieben:Müsste der Debugger nicht meckern wenn man das "UsePNGImageDecoder()" vergisst ?
IMHO nicht, weil er ja nicht weiß, was Du da 'catchen' möchtest.
Könnte ja auch ein BMP sein (wofür Du keinen Decoder benötigst).

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Grafiken in Kontextmenü Elementen (CreatePopupImageMenu)

Beitrag von CSHW89 »

Nur ein kleiner Zusatz:
Das hier war schon so richtig:

Code: Alles auswählen

    MenuItem(#ContextItem1, "Rechtsrum", ImageID(#IconRotateLeft))
    MenuItem(#ContextItem2, "Linksrum", ImageID(#IconRotateRight))
Die Rückgabe von CatchImage brauchst du also eigentlich nicht.

Der Knackpunkt war halt (nur) "UsePNGImageDecoder()"

lg Kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Antworten