Specially for Fangles

Code: Select all
ExamineDesktops()
#MIM_STYLE = $00000010
#MIM_HELPID = $4
#MIM_MAXHEIGHT = $00000001
#MIM_BACKGROUND = $00000002
#MIM_APPLYTOSUBMENUS = $80000000
#MNS_AUTODISMISS = $10000000
#MNS_CHECKORBMP = $4000000
#MNS_DRAGDROP = $2000000
#MNS_MODELESS = $40000000
#MNS_NOCHECK = $80000000
#MNS_NOTIFYBYPOS = $8000000
Structure MENUINFO
cbSize.l
fMask.l
dwStyle.l
cyMax.l
hbrBack.l
dwContextHelpID.l
dwMenuData.l
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
PB_Alignment2.b[12]
CompilerEndIf
EndStructure
Global Run_1,Run_2,Run_3
LoadFont(0,"Georgia",10,#PB_Font_Bold)
For i = 1 To 3
CreateImage(i,60,22,24,$808080)
StartDrawing(ImageOutput(i))
;Box(0,0,55,22,$808080)
DrawingFont(FontID(0))
DrawingMode(#PB_2DDrawing_Transparent)
If i = 1
DrawText(18,2,"File",$FFFFFF)
ElseIf i = 2
DrawText(3,2,"Edition",$FFFFFF)
Else
DrawText(12,2,"Help",$FFFFFF)
EndIf
StopDrawing()
Next
For i = 4 To 6
CreateImage(i,60,22,24,$FFCC99)
StartDrawing(ImageOutput(i))
;Box(0,0,55,22,$FFCC99)
DrawingFont(FontID(0))
DrawingMode(#PB_2DDrawing_Transparent)
If i = 4
DrawText(18,2,"File",$151FFE)
ElseIf i = 5
DrawText(3,2,"Edition",$151FFE)
Else
DrawText(12,2,"Help",$151FFE)
EndIf
StopDrawing()
Next
CreateImage(10,250,400)
StartDrawing(ImageOutput(10))
DrawingMode(#PB_2DDrawing_Gradient )
BackColor($C6FEFC)
FrontColor($FEEBC6)
LinearGradient(30, 0, 250, 100)
Box(0,0,250,400)
DrawingMode(#PB_2DDrawing_Default )
Box(0,0,18,400,$FCC15C)
StopDrawing()
hBrush = CreatePatternBrush_(ImageID(10))
Procedure AlertThread(Parameter)
Repeat
Delay(25)
x = DesktopMouseX()
y = DesktopMouseY()
Gad = WindowFromPoint_(x + y << 32)
cn$=Space(#MAX_PATH)
GetClassName_(Gad, @cn$, #MAX_PATH)
If cn$ = "#32768"
ActGad = Gad
EndIf
If Gad = GadgetID(1) And (Run_2 = 1 Or Run_3 = 1)
Run_2 = 0
Run_3 = 0
SendMessage_(WindowID(0),#WM_CANCELMODE,0,0)
ElseIf Gad = GadgetID(2) And (Run_1 = 1 Or Run_3 = 1)
Run_1 = 0
Run_3 = 0
SendMessage_(WindowID(0),#WM_CANCELMODE,0,0)
ElseIf Gad = GadgetID(3) And (Run_1 = 1 Or Run_2 = 1)
Run_1 = 0
Run_2 = 0
SendMessage_(WindowID(0),#WM_CANCELMODE,0,0)
ElseIf Gad = WindowID(0) And IsWindowEnabled_(ActGad)
Run_1 = 0
Run_2 = 0
Run_3 = 0
SendMessage_(WindowID(0),#WM_CANCELMODE,0,0)
EndIf
ForEver
EndProcedure
Procedure SetImage(iMenu, iID, ico)
ExtractIconEx_("shell32.dll", ico, 0, @iIcon, 1)
im=CreateImage(#PB_Any, 16, 16 ,32)
StartDrawing(ImageOutput(im))
Box(0, 0, 16, 16, GetSysColor_(#COLOR_MENU))
DrawingMode(#PB_2DDrawing_AllChannels)
DrawImage(iIcon, 0, 0, 16, 16)
StopDrawing()
DestroyIcon_(iIcon)
ProcedureReturn im
EndProcedure
Space$ = " "
If OpenWindow(0, 0, 0, 400, 300, "PureBasic - Menu",#PB_Window_SystemMenu|#PB_Window_SizeGadget| #PB_Window_MaximizeGadget| #PB_Window_ScreenCentered)
mHnd1 = CreatePopupMenu(1)
MenuItem( 1, Space$ + "&Load...")
;SetMenuItemBitmaps_(mHnd1,0,#MF_BYPOSITION, ImageID(SetImage(GetSubMenu_(MenuID(1),0), 0, 4)),0)
MenuItem( 2, Space$ + "Save")
; SetMenuItemBitmaps_(mHnd1,1,#MF_BYPOSITION, ImageID(SetImage(GetSubMenu_(MenuID(1),0), 1, 130)),0)
MenuItem( 3, Space$ + "Save As...")
;SetMenuItemBitmaps_(mHnd1,2,#MF_BYPOSITION, ImageID(SetImage(GetSubMenu_(MenuID(1),0), 2, 194)),0)
MenuBar()
OpenSubMenu(Space$ + "Recents")
MenuItem( 5,Space$ + "Pure.png")
MenuItem( 6,Space$ + "Basic.jpg")
OpenSubMenu(Space$ + "Even more !")
MenuItem( 8,Space$ + "Yeah")
CloseSubMenu()
MenuItem( 9,Space$ + "Rocks.tga")
CloseSubMenu()
MenuBar()
MenuItem( 10,Space$ + "&Quit")
mHnd2 = CreatePopupMenu(2)
MenuItem( 11,Space$ + "Cut")
;SetMenuItemBitmaps_(mHnd2,0,#MF_BYPOSITION, ImageID(SetImage(GetSubMenu_(MenuID(2),0), 0, 4)),0)
MenuItem( 12,Space$ + "Copy")
;SetMenuItemBitmaps_(mHnd2,1,#MF_BYPOSITION, ImageID(SetImage(GetSubMenu_(MenuID(2),0), 1, 43)),0)
MenuItem(13,Space$ + "Paste")
;SetMenuItemBitmaps_(mHnd2,2,#MF_BYPOSITION, ImageID(SetImage(GetSubMenu_(MenuID(2),0), 2, 10)),0)
mHnd3 = CreatePopupMenu(3)
MenuItem(14,Space$ + "Contents and Index")
;SetMenuItemBitmaps_(mHnd3,0,#MF_BYPOSITION, ImageID(SetImage(GetSubMenu_(MenuID(3),0), 3,90)),0)
MenuItem(15,Space$ + "About")
m.MENUINFO
m\cbSize = SizeOf(m)
m\fMask = #MIM_STYLE|#MIM_BACKGROUND|#MIM_MAXHEIGHT| #MIM_APPLYTOSUBMENUS ;#MIM_APPLYTOSUBMENUS to apply background brush to all sub menus
;m\dwStyle = #MNS_CHECKORBMP ;For Icon
m\dwStyle = #MNS_NOCHECK ;No Icon
m\cyMax = 0
m\hbrBack = hBrush
SetMenuInfo_(mHnd1,m)
SetMenuInfo_(mHnd2,m)
SetMenuInfo_(mHnd3,m)
ContainerGadget(0,0,0,400,22)
CanvasGadget(1,0,0,60,22)
CanvasGadget(2,60,0,60,22)
CanvasGadget(3, 345,0,60,22)
CloseGadgetList()
SetGadgetColor(0,#PB_Gadget_BackColor,$808080)
For i = 1 To 3
SetGadgetAttribute(i, #PB_Canvas_Image ,ImageID(i))
Next
CreateThread(@AlertThread(), 15)
Repeat
Select WaitWindowEvent()
Case #PB_Event_SizeWindow
ResizeGadget(0,0,0,WindowWidth(0),22)
ResizeGadget(3,WindowWidth(0)-60,0,60,22)
Case #PB_Event_Menu
Select EventMenu()
Case 1
Debug "Load"
Case 11
Debug "Cut"
Case 15
Debug "Help"
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_MouseEnter
;Run = 1
Run_1 = 1
SetGadgetAttribute(1, #PB_Canvas_Image ,ImageID(4))
DisplayPopupMenu(1,WindowID(0),WindowX(0) + GadgetX(1) + 8, WindowY(0) + 52)
Case #PB_EventType_MouseLeave
SetGadgetAttribute(1, #PB_Canvas_Image ,ImageID(1))
EndSelect
Case 2
Select EventType()
Case #PB_EventType_MouseEnter
Run_2 = 1
SetGadgetAttribute(2, #PB_Canvas_Image ,ImageID(5))
DisplayPopupMenu(2,WindowID(0),WindowX(0) + GadgetX(2) + 8, WindowY(0) + 52)
Case #PB_EventType_MouseLeave
SetGadgetAttribute(2, #PB_Canvas_Image ,ImageID(2))
EndSelect
Case 3
Select EventType()
Case #PB_EventType_MouseEnter
Run_3 = 1
SetGadgetAttribute(3, #PB_Canvas_Image ,ImageID(6))
DisplayPopupMenu(3,WindowID(0),WindowX(0) + WindowWidth(0) - 202, WindowY(0) + 52)
Case #PB_EventType_MouseLeave
SetGadgetAttribute(3, #PB_Canvas_Image ,ImageID(3))
EndSelect
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
End