Here's a very crude example of handling key strokes using WIL Dialog's context menu functionality.
InitDialogConstants() ; Initialize Dialog Constants (need only be done once usually)
#DefineSubroutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_Name,MyDialog_EventInfo,MyDialog_ChangeInfo)
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_BUTTONPUSHED,@TRUE)
DialogProcOptions(MyDialog_Handle,MSG_MENUITEM,@TRUE)
; DialogProcOptions(MyDialog_Handle,MSG_MENUITEMINIT,@TRUE)
return(RET_DO_DEFAULT)
case MSG_BUTTONPUSHED
if MyDialog_Name == "PushButton_OK" ; OK
return(RET_DO_DEFAULT)
elseif MyDialog_Name == "PushButton_Cancel" ; Cancel
return(RET_DO_DEFAULT)
endif ; MyDialog_Name
return(RET_DO_DEFAULT)
case MSG_MENUITEM
if MyDialog_Name == "cmi1_Enter" ; \{Enter]
strText=DialogControlGet(MyDialog_Handle,"MultiLineBox_1",DC_EDITBOX,0)
DialogControlset(MyDialog_Handle,"MultiLineBox_1",DC_EDITBOX,strText:@CRLF:"Enter Key Pressed")
return(RET_DO_DEFAULT)
elseif MyDialog_Name == "cmi2_F5" ; \{5}
strText=DialogControlGet(MyDialog_Handle,"MultiLineBox_1",DC_EDITBOX,0)
DialogControlset(MyDialog_Handle,"MultiLineBox_1",DC_EDITBOX,strText:@CRLF:"F5 Key Pressed")
return(RET_DO_DEFAULT)
elseif MyDialog_Name == "cmi3_F7" ; \{F7}
strText=DialogControlGet(MyDialog_Handle,"MultiLineBox_1",DC_EDITBOX,0)
DialogControlset(MyDialog_Handle,"MultiLineBox_1",DC_EDITBOX,strText:@CRLF:"F7 Key Pressed")
return(RET_DO_DEFAULT)
endif ; MyDialog_Name
return(RET_DO_DEFAULT)
endswitch ; MyDialog_Message
return(RET_DO_DEFAULT)
#EndSubroutine ; End of Dialog Callback MyDialogCallbackProc
MyDialogFormat=`WWWDLGED,6.2`
MyDialogCaption=`WIL Dialog 1`
MyDialogX=882
MyDialogY=085
MyDialogWidth=425
MyDialogHeight=242
MyDialogNumControls=006
MyDialogProcedure=`MyDialogCallbackProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0
MyDialog001=`119,225,033,011,PUSHBUTTON,"PushButton_OK",DEFAULT,"OK",1,10,32,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`273,225,033,011,PUSHBUTTON,"PushButton_Cancel",DEFAULT,"Cancel",0,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog003=`068,039,257,141,MULTILINEBOX,"MultiLineBox_1",mlVariable1,"Multiline edit 1",DEFAULT,60,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog004=`000,000,000,000,MENUITEM,"cmi1_Enter",DEFAULT,"\{Enter}",DEFAULT,10,1`
MyDialog005=`000,000,000,000,MENUITEM,"cmi2_F5",DEFAULT,"\{F5}",DEFAULT,20,1`
MyDialog006=`000,000,000,000,MENUITEM,"cmi3_F7",DEFAULT,"\{F7}",DEFAULT,30,1`
ButtonPushed=Dialog("MyDialog")