VFP BINDEVENT( ) 函数
提供当一个事件发生时执行用户代码(一个对象的方法)的能力。
下面语法的第一种形式,可以使用 BINDEVENT( ) 从 Visual FoxPro 本身对象到其它 Visual FoxPro
对象来绑定事件、属性或方法。
BINDEVENT(oEventSource, cEvent, oEventHandler, cDelegate [, nFlags])
参数
oEventSource
指定事件源,它必须是一个有效的 Visual FoxPro 对象。
hWnd
指定接收
Windows 消息窗口的整数句柄。如果传递了一个 0 的值,则指定的事件(nMessage)被所有窗口俘获。可以用 hWnd 属性 (Visual FoxPro)
来绑定通过
_VFP、_SCREEN 和表单实例接收到的 Windows Messages (事件)。ActiveX 控件也有 hWnd 属性。
cEvent
指定要绑定事件、方法或属性的名称。
nMessage
指定要俘获的有效 Windows 消息。关于 Windows
消息的信息,参见 MSDN (the Microsoft Developer Network)。
oEventHandler
指定对象,必须是一个有效的 Visual FoxPro 对象,处理该事件。
cDelegate
指定方法或“代理”,为 oEventHandler 处理该事件。该代理方法必须与 cEvent
中指定的事件有相同的参数。可以调用 AEVENTS( )
函数来获取引用到该事件源的对象。如果该代理方法没有足够的参数来处理通过该事件传递来的参数,Visual FoxPro 产生一个错误。当俘获的是
Windows Message (Win Msg) 事件时,cDelegate 方法必须包含一个 PARAMETERS
指令来接收传来的四个参数。参数的格式与 Windows WindowProc
函数的格式一致。有关 Windows WindowProc
函数的信息,参见 MSDN (the Microsoft Developer Network)。该方法必须返回一个整数值。
PUBLIC oHandler
oHandler=NEWOBJECT("myhandler")
DO (_browser)
BINDEVENT(_SCREEN,"Resize",oHandler,"myresize")
DEFINE CLASS myhandler AS Session
PROCEDURE myresize
IF ISNULL(_obrowser) THEN
UNBINDEVENTS(THIS)
ELSE
_obrowser.left = _SCREEN.Width - _obrowser.width
ENDIF
RETURN
ENDDEFINE
Bindevent(lopgf.Pages(m.lnyy),"RightClick",myapp,"reevent_page_RightClick")