За 20 лет кодинга на Ассемблере упустил такую возможность - добавление значков только к пунктам popup menu
If OpenWindow(0, 0, 0, 230, 90, "Event handling example...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreatePopupMenu(0)
MenuTitle("")
MenuItem(0, "Item 1")
MenuItem(1, "Item 2")
MenuItem(2, "Item 3")
EndIf
hbmp=CreateImage(0,32,32)
StartDrawing(ImageOutput(0))
Box(0,0,31,31,$FFFFFF)
LineXY(0,0,31,31,255)
;DrawImage(ImageID(3),0,0)
StopDrawing()
hbmp1=CreateImage(1,32,32)
hbmp=LoadImage(2,"b64.bmp")
; LoadImage(3,"b64.ico")
; CopyImage(3,2)
If SetMenuItemBitmaps_(MenuID(0),0,#MF_BYCOMMAND,ImageID(0),ImageID(0))=0
Debug "0:"+Str(GetLastError_())
EndIf
If SetMenuItemBitmaps_(MenuID(0),0,#MF_BYPOSITION,ImageID(2),ImageID(2))=0
Debug "2:"+Str(GetLastError_())
EndIf
DisplayPopupMenu(0,WindowID(0))
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
If CreatePopupMenu(0)
MenuTitle("")
MenuItem(0, "Item 1")
MenuItem(1, "Item 2")
MenuItem(2, "Item 3")
EndIf
hbmp=CreateImage(0,32,32)
StartDrawing(ImageOutput(0))
Box(0,0,31,31,$FFFFFF)
LineXY(0,0,31,31,255)
;DrawImage(ImageID(3),0,0)
StopDrawing()
hbmp1=CreateImage(1,32,32)
hbmp=LoadImage(2,"b64.bmp")
; LoadImage(3,"b64.ico")
; CopyImage(3,2)
If SetMenuItemBitmaps_(MenuID(0),0,#MF_BYCOMMAND,ImageID(0),ImageID(0))=0
Debug "0:"+Str(GetLastError_())
EndIf
If SetMenuItemBitmaps_(MenuID(0),0,#MF_BYPOSITION,ImageID(2),ImageID(2))=0
Debug "2:"+Str(GetLastError_())
EndIf
DisplayPopupMenu(0,WindowID(0))
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Со значками этот трюк пока не проходит
Дополнение 19.03.2025. Еще один вариант
If OpenWindow(0, 200, 200, 200, 32, "launchy")
; LoadImage(0,"program01.bmp")
CatchImage(0,?img1)
LoadImage(1,"paper64.bmp")
hmnu=CreateMenu_()
hpmnu=CreatePopupMenu_()
;AppendMenu_(hpmnu, #MF_STRING, 100, @"Open")
AppendMenu_(hpmnu,#MF_BITMAP,100,ImageID(1))
;;AppendMenu_(hpmnu, #MF_SEPARATOR, 0, 0);
AppendMenu_(hpmnu, #MF_STRING|#MF_MENUBARBREAK, 101, @"File")
;main menu
AppendMenu_(hmnu,#MF_BITMAP|#MF_POPUP,hpmnu,ImageID(0))
AppendMenu_(hmnu,#MF_BITMAP,99,ImageID(1))
SetMenu_(WindowID(0),hmnu)
DestroyMenu_(hpmnu)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
DataSection
img1:
IncludeBinary "program01.bmp"
; LoadImage(0,"program01.bmp")
CatchImage(0,?img1)
LoadImage(1,"paper64.bmp")
hmnu=CreateMenu_()
;AppendMenu_(hpmnu, #MF_STRING, 100, @"Open")
AppendMenu_(hpmnu,#MF_BITMAP,100,ImageID(1))
;;AppendMenu_(hpmnu, #MF_SEPARATOR, 0, 0);
AppendMenu_(hpmnu, #MF_STRING|#MF_MENUBARBREAK, 101, @"File")
;main menu
AppendMenu_(hmnu,#MF_BITMAP|#MF_POPUP,hpmnu,ImageID(0))
AppendMenu_(hmnu,#MF_BITMAP,99,ImageID(1))
SetMenu_(WindowID(0),hmnu)
DestroyMenu_(hpmnu)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
DataSection
img1:
IncludeBinary "program01.bmp"
Картинки отображались не пойми как. Перевел .bmp в формат 24бит.
Комментарии
Отправить комментарий