要用鼠标点一下才能响应SetCapture
编号:QA000512
建立日期: 1999年2月12日 最后修改日期:1999年2月12日
所属类别:
DD:
VB5
PW98
我声明了SETCAPTURE等两个函数,再用以下语句捕捉FORM1的MOUSE EXIT事件:
Private Sub form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim MouseEnter As Boolean '鼠标进入的标志位
MouseEnter = (0 <= X) And (X <= form1.Width) And (0 <= Y) And (Y <= form1.Height) '计算鼠标的移动是否在Command1里面
If MouseEnter Then '鼠标已经进入
Me.Caption = "Mouse In Button!"
SetCapture form1.hWnd
Else '鼠标已经离开
Me.Caption = "Mouse Out!"
ReleaseCapture
End If
End Sub
但每当鼠标移进FORM的用户区域,再移去其他地方(其他FORM),程序总会停止响应,要用鼠标点一下才行,不知是为什么?
回答:
确实存在你说的问题,我估计这是Win32 API设计的特点,这同Windows 3.x不同。我在回答QA000039 "通过指点操作获得窗口句柄"时就注意到了。而且我发现许多软件都要求用户按下左键采用拖放的方式的来选择窗口,可能就是因为这个原因。如果要想不按鼠标键,可能需要用SetWindowsHookEx扑捉鼠标消息。
此问题由李海回答。
| |
|
|
| |
|
|