WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Dialog Editor version 6.X
plus
plus

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Dialogs - Menus in dialogs.wbt

Keywords: 	  Dialogs - Menus in dialogs.wbt

Magic. Real Magic. Don't ask. Thanx to Guido for making it work.

The PopupMenu UDF takes a | delimited list of menu items and presents them to the user.


#DefineFunction PopupMenu(choices)
   user32=StrCat(DirWindows(1),"User32.DLL")
   hwnd=DllHwnd("")
   DllCall(user32, long:"SetForegroundWindow", long:hwnd)
   MF_STRING = 0
   TPM_RETURNCMD = 256
   TPM_LEFTBUTTON = 0
   ;create menu
   hmenu = DllCall(user32,long:"CreatePopupMenu")
   choicecount=ItemCount(choices,"|")
   For xx=1 To choicecount
      thischoice=ItemExtract(xx,choices,"|")
      DllCall(user32,long:"AppendMenuA",long:hmenu, long:MF_STRING, long:xx, lpstr:thischoice)
   Next
   mc = MouseInfo(3)
   mcx=ItemExtract(1,mc," ")
   mcy=ItemExtract(2,mc," ")
   wFlags=TPM_RETURNCMD|TPM_LEFTBUTTON
   s=DllCall(user32,long:"TrackPopupMenu",long:hmenu, long:wFlags, long:mcx, long:mcy, long:0, long:hwnd, lpnull)
   ;Destroy Menu
   DllCall(user32,long:"DestroyMenu",long:hmenu)
   Return(s)
#EndFunction


#DefineFunction MyDialogProc(D_Handle,D_Message,D_ControlID,Reserved_0,Reserved_1)
   MSG_INIT=0                ; The one-time initilization
   MSG_BUTTONPUSHED=2        ; Pushbutton or Picturebutton
   
   Switch D_Message

      Case MSG_INIT
         DialogProcOptions(D_Handle,MSG_BUTTONPUSHED,@TRUE)
         Break

      Case MSG_BUTTONPUSHED
         Switch D_ControlID
             Case 003
                pick=PopupMenu("Notepad|Calc")
                Switch pick
                   Case 1 ; notepad
                      Run("notepad.exe","")
                      Break
                   Case 2 ; calc
                       Run("calc.exe","")
                       Break
                EndSwitch
                Return (-2)
         EndSwitch
         Break
   EndSwitch
   Return (-1)
#EndFunction



MyDialogFormat=`WWWDLGED,6.1`

MyDialogCaption=`Menu Example`
MyDialogX=002
MyDialogY=030
MyDialogWidth=112
MyDialogHeight=078
MyDialogNumControls=004
MyDialogProcedure=`MyDialogProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0

MyDialog001=`026,033,034,011,PUSHBUTTON,DEFAULT,"OK",1,1,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`001,001,107,011,STATICTEXT,DEFAULT,DEFAULT,DEFAULT,2,DEFAULT,DEFAULT,DEFAULT,"0|255|255"`
MyDialog003=`001,001,022,011,PUSHBUTTON,DEFAULT,"Run",2,3,128,"Microsoft Sans Serif|5325|70|34","0|0|0","0|255|255"`
MyDialog004=`025,001,022,011,PUSHBUTTON,DEFAULT,"Exit",0,4,128,"Microsoft Sans Serif|5325|70|34","0|0|0","0|255|255"`

ButtonPushed=Dialog("MyDialog")

Article ID:   W15463
File Created: 2003:10:14:08:00:24
Last Updated: 2003:10:14:08:00:24