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") MF_STRING = 0 TPM_RETURNCMD = 256 TPM_LEFTBUTTON = 0 hwnd=dllhwnd("") ;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 002 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` MyDialog001=`001,001,108,011,STATICTEXT,DEFAULT,DEFAULT,DEFAULT,1,DEFAULT,DEFAULT,DEFAULT,"0|255|255"` MyDialog002=`001,001,022,011,PUSHBUTTON,DEFAULT,"Run",2,2,DEFAULT,"Microsoft Sans Serif|5325|70|34","0|0|0","0|255|255"` MyDialog003=`025,001,022,011,PUSHBUTTON,DEFAULT,"Exit",0,3,DEFAULT,"Microsoft Sans Serif|5325|70|34","0|0|0","0|255|255"` MyDialog004=`026,033,034,011,PUSHBUTTON,DEFAULT,"OK",1,4,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ButtonPushed=Dialog("MyDialog")