Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Detecting click
Message
General information
Forum:
Visual FoxPro
Category:
Forms & Form designer
Title:
Environment versions
Visual FoxPro:
VFP 9
Miscellaneous
Thread ID:
01056882
Message ID:
01056902
Views:
16
This VFP9 code uses BINDEVENT to detect left mouse button down event outside of the modal form:
obj = CREATEOBJECT("Tform")
obj.Show(1)

DEFINE CLASS Tform As Form
#DEFINE WM_LBUTTONDOWN 0x0201
#DEFINE GWL_WNDPROC -4
PROTECTED hOrigProc, hWindow
	hOrigProc=0
	hWindow=0
	Width=500
	Height=300
	Caption="Modal Form"
	AutoCenter=.T.

PROCEDURE Activate
	IF THIS.hWindow = 0
		DECLARE INTEGER GetWindowLong IN user32;
			INTEGER hWindow, INTEGER nIndex
		THIS.hWindow = _screen.HWnd
		THIS.hOrigProc = GetWindowLong(THIS.hWindow, GWL_WNDPROC)
		= BINDEVENT(THIS.hWindow, WM_LBUTTONDOWN, THIS, "OnMouseDown")
	ENDIF

PROCEDURE OnMouseDown(hWindow as Integer,;
	nMsgID as Integer, wParam as Integer, lParam as Integer)

	LOCAL nReturn
	nReturn=0
	
	DO CASE
	CASE nMsgID=WM_LBUTTONDOWN
		LOCAL nX, nY
		nX = BITAND(lParam, 0x0000ffff)
		nY = BITRSHIFT(BITAND(lParam, 0xffff0000),16)
		ACTIVATE SCREEN
		? nX, nY
		 
	OTHERWISE
	* pass control to the original window procedure
		nReturn = CallWindowProc(THIS.hOrigProc, THIS.hWindow,;
			m.nMsgID, m.wParam, m.lParam)
	ENDCASE
RETURN nReturn

ENDDEFINE
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform