Seite 1 von 1

Große Symbole im Menü?

Verfasst: 14.10.2008 17:59
von Programie
Hi,

Wenn ich unter Windows Vista größere Symbole in einem Menü eines Fensters (z.B. 48 x 48 px), kann ich einfach mit CreateImage() ein Bild erstellen, da drauf zeichnen und mit der WinAPI-Funktion SetMenuItemBitmaps_() das Bild in das Menü reinmachen.
Wenn ich das Programm dann aber unter Windows XP starte, sind die Symbole zwar in der Größe, aber es wird nur der obere linke Teil (Ich glaub 16 x 16 Pixel) von dem Bild angezeigt.
Woran liegt das?


Hier der Code:

Code: Alles auswählen

ImageID=CatchImage(0,?Icon)

If OpenWindow(0,100,100,500,300,"MenuIcon")
 If CreateMenu(0,WindowID(0))
  MenuTitle("Test")
  For IconSize=8 To 64 Step 8
   Image=CreateImage(#PB_Any,IconSize,IconSize)
    If IsImage(Image)
     If StartDrawing(ImageOutput(Image))
      Box(0,0,IconSize,IconSize,GetSysColor_(#COLOR_MENU))
      DrawImage(ImageID,0,0,IconSize,IconSize)
      StopDrawing()
     EndIf
    EndIf
   MenuItem(IconSize,Str(IconSize)+" x "+Str(IconSize)+" px")
   SetMenuItemBitmaps_(MenuID(0),iconSize,#MF_BYCOMMAND,ImageID(Image),ImageID(Image))
  Next
 EndIf
 Repeat:Until WaitWindowEvent()=16
EndIf
Hier noch zwei Screenshots (Vista und XP):
Windows Vista
Windows XP

Verfasst: 14.10.2008 18:07
von ts-soft
Keine Ahnung woran das liegt, sieht sowieso schrecklich aus :mrgreen:
Aber Deinen Code sollteste besser in testbarer Form posten, indem Du die
erste Zeile z.B. so abänderst:

Code: Alles auswählen

ImageID=LoadImage(0, #PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico")
Oder Datazeilen, Malen usw., nur so als Hinweis :wink:

Verfasst: 14.10.2008 18:09
von Programie
Jajaja :mrgreen:

Nie mach ich mal was richtig. :lol:

Re: Große Symbole im Menü?

Verfasst: 22.09.2012 19:07
von Frabbing
Hi,

ich möchte das Thema nochmal aufgreifen. Gibt es eine einfache Möglichkeit in Menüs z.B. 32x32 große Icons oder Bitmaps komplett anzuzeigen?

Re: Große Symbole im Menü?

Verfasst: 18.10.2012 12:13
von Frabbing
Hat jemand denn eine kompliziertere Lösung parat? 8)