Page 1 of 1

MenuItem check uncheck

Posted: Wed Jan 26, 2011 1:29 pm
by +18
Hello
Image

Code: Select all

Procedure MenuItemControler()
  For i=0 To 4 : CheckMenuItem_(GetMenu_(WindowID(0)),i,#MF_UNCHECKED) : Next
  CheckMenuItem_(GetMenu_(WindowID(0)),EventMenu(),#MF_CHECKED)
EndProcedure

OpenWindow(0,0,0,150,160,"Menu",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  Global hWndMenu = CreateMenu(0, WindowID(0))
  MenuTitle("MainMenu")
  
  MenuItem(0,"Item 1")
  MenuItem(1,"Item 2")
  MenuItem(2,"Item 3") : CheckMenuItem_(hWndMenu,2,#MF_CHECKED);Default Item
  MenuItem(3,"Item 4")
  MenuItem(4,"Item 5")
  MenuBar()
  MenuItem(5,"Exit")
Repeat 
  event = WaitWindowEvent() 
   Select event
    Case #PB_Event_Menu
      Select EventMenu()
        Case 0 : MenuItemControler()
        Case 1 : MenuItemControler()
        Case 2 : MenuItemControler()
        Case 3 : MenuItemControler()
        Case 4 : MenuItemControler()  
        Case 5 : exit=1
     EndSelect
   Case #PB_Event_CloseWindow : exit=1
  EndSelect
Until exit=1
i need :
1-Get state of checked or unchecked items?
2-can i use option icon Instead check icon?
3-have u a better way for this subject?
Thanks

Re: MenuItem check uncheck

Posted: Wed Jan 26, 2011 1:47 pm
by Shardik
Have you already taken a look into Arctic Fox's nice examples?
http://www.purebasic.fr/english/viewtopic.php?t=35749

Re: MenuItem check uncheck

Posted: Wed Jan 26, 2011 1:57 pm
by +18
Thanks Shardik , you are right :D

Re: MenuItem check uncheck

Posted: Wed Jan 26, 2011 6:54 pm
by RASHAD
I like it that way
+18 use any symbol you like
You can complete the snippet

Code: Select all

Global x,y
x = GetSystemMetrics_(#SM_CXMENUCHECK)
y = GetSystemMetrics_(#SM_CYMENUCHECK)

Procedure ChkImgs() 
  CreateImage(0, x, y)  
  StartDrawing(ImageOutput(0))
      Box(0,0,x,y,GetSysColor_(#COLOR_MENU))
      DrawingMode(#PB_2DDrawing_Transparent)
      DrawText(4, -2,"x",$0202FD)
  StopDrawing()
  CreateImage(1, x, y)  
  StartDrawing(ImageOutput(1))
      Box(0,0,x,y,GetSysColor_(#COLOR_MENU))
      DrawingMode(#PB_2DDrawing_Transparent)
      DrawText(5, 2,"*",$0202FD)
      StopDrawing()
  CreateImage(2, x, y)  
  StartDrawing(ImageOutput(2))
      Box(0,0,x,y,GetSysColor_(#COLOR_MENU))
      DrawingMode(#PB_2DDrawing_Transparent)
      DrawText(5, 2,"#",$0202FD)
  StopDrawing()
EndProcedure


OpenWindow(0,0,0,150,160,"Menu",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ChkImgs()
  CreateMenu(0, WindowID(0))
  MenuTitle("MainMenu")
 
  MenuItem(0,"Item 1")
  MenuItem(1,"Item 2")
  MenuItem(2,"Item 3")
  MenuItem(3,"Item 4")
  MenuItem(4,"Item 5")
  MenuBar()
  MenuItem(5,"Exit")
Repeat
  event = WaitWindowEvent()
   Select event
    Case #PB_Event_Menu
      Select EventMenu()
        Case 0
          Menu_0_f = Menu_0_f ! 1
          If Menu_0_f = 1
             SetMenuItemBitmaps_(MenuID(0),0,#MF_BYCOMMAND,ImageID(0),0)
          Else
            SetMenuItemBitmaps_(MenuID(0),0,#MF_BYCOMMAND,0,0)
          EndIf
        Case 1
          Menu_1_f = Menu_1_f ! 1
          If Menu_1_f = 1
             SetMenuItemBitmaps_(MenuID(0),1,#MF_BYCOMMAND,ImageID(1),0)
          Else
            SetMenuItemBitmaps_(MenuID(0),1,#MF_BYCOMMAND,0,0)
          EndIf
        Case 2
          Menu_2_f = Menu_2_f ! 1
          If Menu_2_f = 1
             SetMenuItemBitmaps_(MenuID(0),2,#MF_BYCOMMAND,ImageID(2),0)
          Else
            SetMenuItemBitmaps_(MenuID(0),2,#MF_BYCOMMAND,0,0)
          EndIf
        Case 3
        Case 4
        Case 5
      EndSelect
      
   Case #PB_Event_CloseWindow : exit=1
  EndSelect
Until exit=1

Re: MenuItem check uncheck

Posted: Wed Jan 26, 2011 7:30 pm
by +18
Thanks Rashad , that's very nice :D
Other Different code from Rashad :D