Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
Keywords: Detect Right Click Right-Click Mouse Control WIL Dialog
;============================================================ ; ; ; Detect Right Click on Control in WIL Dialog ; ; Deana Falk 2010.07.02 ; ;============================================================ #DefineSubRoutine InitDialogConstants() ;DialogprocOptions Constants MSG_INIT=0 ; The one-time initialization MSG_TIMER=1 ; Timer event MSG_BUTTONPUSHED=2 ; Pushbutton or Picturebutton MSG_RADIOPUSHED=3 ; Radiobutton clicked MSG_CHECKBOX=4 ; Checkbox clicked MSG_EDITBOX=5 ; Editbox or Multilinebox MSG_FILESELECT=6 ; Filelistbox MSG_ITEMSELECT=7 ; Itembox MSG_COMBOCHANGE=8 ; Combobox/Droplistbox MSG_CALENDAR=9 ; Calendar date change MSG_SPINNER=10 ; Spinner number change MSG_CLOSEVIA49=11 ; Close clicked (Enabled via DialogProcOptions 1002 MSG_FILEBOXDOUBLECLICK=12 ; Get double-click message on a FileListBox MSG_ITEMBOXDOUBLECLICK=13 ; Get double-click message on an ItemBox MSG_COMEVENT=14 ; COMCONTROL Event notification from DialogObject (NOT DialogProcOptions) DPO_DISABLESTATE=1000 ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog DPO_CHANGEBACKGROUND=1001 ; -1=Get Current otherise bitmap or color string DPO_CHANGESYSMENU=1002 ; -1=Get Current 0=none 1=close 2=close/min 3=close/max 4=close/min/max DPO_CHANGETITLE=1003 ; Set/Get Dialog Title - (-1 to get) DPO_GETCONTROLNAME=1004 ; Returns the name of the control associated with the number. ;DialogControlState Constants DCSTATE_SETFOCUS=1 ; Give Control Focus DCSTATE_QUERYSTYLE=2 ; Query control's style DCSTATE_ADDSTYLE=3 ; Add control style DCSTATE_REMOVESTYLE=4 ; Remove control style DCSTATE_GETFOCUS=5 ; Get control that has focus DCSTATE_MOVEMOUSEOVER=6 ; Move the mouse over the control DCSTYLE_DEFAULT=0 ; Set Default Style DCSTYLE_INVISIBLE=1 ; Set Control Invisible DCSTYLE_DISABLED=2 ; Set Control Disabled DCSTYLE_NOUSERDATA=4 ; Note: Setable via DialogControlState function ONLY SPINNER control only DCSTYLE_READONLY=8 ; Sets control to read-only (user cannot type in data) EDITBOX MULTILINEBOX SPINNER DCSTYLE_PASSWORD=16 ; Sets 'password mode' where only *'s are displayed EDITBOX DCSTYLE_DEFAULTBUTTON=32 ; Sets a button as the default button PUSHBUTTON PICTUREBUTTON DCSTYLE_DIGITSONLY=64 ; Set edit box to accept digits only EDITMOX MULTILINEBOX DCSTYLE_FLAT=128 ; Makes a 'flat' hyperlink-looking button PUSHBUTTON PICTUREBUTTON DCSTYLE_NOADJUST=256 ; Turns off auto-height adjustment ITEMBOX FILELISTBOX DCSTYLE_TEXTCENTER=512 ; Center text in control VARYTEXT STATICTEXT DCSTYLE_TEXTRIGHT=1024 ; Flush-Right text in control VARYTEXT STATICTEXT DCSTYLE_NOSELCURLEFT=2048 ; No selection, cursor left EDITBOX MULTILINEBOX DCSTYLE_NOSELCURRIGHT=4096; No selection, cursor right EDITBOX MULTILINEBOX ;DialogControlSet / DialogControlGet Constants DC_CHECKBOX=1 ; CHECKBOX DC_RADIOBUTTON=2 ; RADIOBUTTON DC_EDITBOX=3 ; EDITBOX MULTILINEBOX DC_TITLE=4 ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON DC_ITEMBOXCONTENTS=5 ; ITEMBOX FILELISTBOX DROPLISTBOX DC_ITEMBOXSELECT=6 ; ITEMBOX FILELISTBOX DROPLISTBOX DC_CALENDAR=7 ; CALENDAR DC_SPINNER=8 ; SPINNER DC_MULTITABSTOPS=9 ; MULTILINEBOX DC_ITEMSCROLLPOS=10 ; ITEMBOX FILELISTBOX DC_BACKGROUNDCOLOR=11 ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX DC_PICTUREBITMAP=12 ; PICTURE PICTUREBUTTON DC_TEXTCOLOR=13 ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FIELLISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX DC_ITEMBOXADD=14 ; ITEMBOX FILELISTBOX DROPLISTBOX DC_ITEMBOXREMOVE=15 ; ITEMBOX FILELISTBOX DROPLISTBOX DC_RADIOVALUE=16 ; RADIOBUTTON ;DialogObject constants DLGOBJECT_ADDEVENT=1 ; Call dialog callback when the specified event occurs DLGOBJECT_STOPEVENT=2 ; Stop calling dialog callback when an event previously requested with DLGOBJECT_GETOBJECT=3 ; Return an object references to the specified control DLGOBJECT_GETPICTURE=4 ; Create and return an object reference to a picture object ;Return code constants RET_DO_CANCEL=0 ; Cancels dialog RET_DO_DEFAULT= -1 ; Continue with default processing for control RET_DO_NOT_EXIT= -2 ; Do not exit the dialog Return #EndSubRoutine #DefineSubRoutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_Name,MyDialog_EventInfo,rsvd) InitDialogConstants() ; Initialize Dialog Constants ON_EQUAL = @TRUE ; Initialize variable ON_EQUAL Switch MyDialog_Message ; Switch based on Dialog Message type Case MSG_INIT ; Standard Initialization message DialogProcOptions(MyDialog_Handle,MSG_TIMER,100) Return(RET_DO_DEFAULT) Case MSG_TIMER clickstatus = MouseInfo(4) If clickstatus == 1 controlnum = udfMouseOver(MyDialog_Handle, MyDialogNumControls) controlname = DialogProcOptions(MyDialog_Handle, DPO_GETCONTROLNAME, controlnum ) ;Pause(controlnum, controlname) ;Update VaryText Control DialogControlSet( MyDialog_Handle, "VaryText_1", DC_TITLE, 'Num: ' : controlnum: '| Name: ' : controlname ) Switch @TRUE Case controlname == "PushButton_ONE" ; ID "PushButton_ONE" PushButton_ONE Pause('User Right Clicked On', 'Control Num: ' : controlnum: @LF : 'Control Name: ' : controlname) Return(RET_DO_DEFAULT) Case controlname == "PushButton_TWO" ; ID "PushButton_TWO" PushButton_TWO Pause('User Right Clicked On', 'Control Num: ' : controlnum: @LF : 'Control Name: ' : controlname) Return(RET_DO_DEFAULT) Case controlname == "PushButton_THREE" ; ID "PushButton_THREE" PushButton_THREE Pause('User Right Clicked On', 'Control Num: ' : controlnum: @LF : 'Control Name: ' : controlname) Return(RET_DO_DEFAULT) Case controlname == "PushButton_Cancel" ; ID "PushButton_Cancel" PushButton_Cancel Pause('User Right Clicked On', 'Control Num: ' : controlnum: @LF : 'Control Name: ' : controlname) Return(RET_DO_DEFAULT) EndSwitch EndIf Return(RET_DO_NOT_EXIT) EndSwitch ; MyDialog_Message Return(RET_DO_DEFAULT) #EndSubRoutine ; End of Dialog Callback MyDialogCallbackProc #DefineFunction udfMouseOver(hDlg, CtrlCnt) User32 = StrCat(DirWindows(1), 'User32.dll') For Cnt = 1 To CtrlCnt hCtrl = DllCall(User32, long:"GetDlgItem", long:hDlg, long:Cnt+99) If udfctrlfrompt(hCtrl)!=0 Then Return Cnt Next Return 0 #EndFunction ;udfMouseOver #DefineFunction udfctrlfrompt(hCtrl) RECT = BinaryAlloc(16) ; Fill buffer with control coordinates and get offfsets of initial point. DllCall(StrCat(DirWindows(1), "User32.DLL"), long:"GetWindowRect", long:hCtrl, lpbinary:RECT) XX = BinaryPeek4(RECT, 0) YY = BinaryPeek4(RECT, 4) ; Is the mouse over the control? Coords = MouseInfo(3) ; Mouse screen coordinates in pixels mX = ItemExtract(1, Coords, ' ') mY = ItemExtract(2, Coords, ' ') If !DllCall(StrCat(DirWindows(1), "User32.DLL"), long:"PtInRect", lpbinary:RECT, long:mX, long:mY) Then Rtn = @FALSE Else Rtn = StrCat(mX-XX, @TAB, mY-YY) ; Convert mouse coords to client coords. BinaryFree(RECT) Return Rtn #EndFunction ;udfCtrlFromPt MyDialogFormat=`WWWDLGED,6.2` MyDialogCaption=`Right-Click Capture Sample` MyDialogX=191 MyDialogY=042 MyDialogWidth=230 MyDialogHeight=111 MyDialogNumControls=006 MyDialogProcedure=`MyDialogCallbackProc` MyDialogFont=`DEFAULT` MyDialogTextColor=`DEFAULT` MyDialogBackground=`DEFAULT,DEFAULT` MyDialogConfig=0 MyDialog001=`033,045,036,012,PUSHBUTTON,"PushButton_ONE",DEFAULT,"ONE",1,10,32,DEFAULT,DEFAULT,DEFAULT` MyDialog002=`085,045,036,012,PUSHBUTTON,"PushButton_TWO",DEFAULT,"TWO",2,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog003=`135,045,036,012,PUSHBUTTON,"PushButton_THREE",DEFAULT,"THREE",3,30,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog004=`071,081,064,012,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,40,DEFAULT,DEFAULT,DEFAULT,DEFAULT` MyDialog005=`075,023,142,012,VARYTEXT,"VaryText_1",vtVariable1,"",DEFAULT,50,DEFAULT,"Microsoft Sans Serif|6656|40|34","0|0|0",DEFAULT` MyDialog006=`007,023,074,012,STATICTEXT,"StaticText_1",DEFAULT,"Right-clicked on Button:",DEFAULT,60,DEFAULT,"Microsoft Sans Serif|6656|40|34","0|0|0",DEFAULT` ButtonPushed=Dialog("MyDialog")
Article ID: W17739
Filename: Detect Right Click on Control in WIL Dialog.txt
File Created: 2010:07:02:08:42:42
Last Updated: 2010:07:02:08:42:42