想实现鼠标焦点在程序窗口范围之外时,该程序结束.

dbbdggdbbdgg 2000-04-14 10:09:00
想实现鼠标焦点在程序窗口范围之外时,该程序结束.
程序中:
Private Sub Form_Deactivate()
end
End Sub

Private Sub Form_LostFocus()
end
End Sub
但是不灵, 它只是缩到任务栏上了,why?
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
solomon 2000-04-24
  • 打赏
  • 举报
回复
Timer.Interval = 50
sub Timer1_OnTimer()
GetCursorPos x, y ;This is API
if x < scalex(Left, vbTwips, vbPixels) or x > .... ; 判断是否在Form外
end
endif
end sub
Un1 2000-04-14
  • 打赏
  • 举报
回复
原因是VB Form的LostFocus和Deactive只能在本程序内发生,一个简单的解决办法是增加一个几百毫秒的定时器,加入程序:
Private Declare Function GetActiveWindow Lib "user32" () As Long

Private Sub Timer1_Timer()
If GetActiveWindow() <> hWnd Then End
End Sub
Janven 2000-04-14
  • 打赏
  • 举报
回复
行才怪,要用消息处理的。在程序窗口之外的鼠标键盘行为是不会触发窗体事件的,用API吧,参考函数GetCapture,GetCursorPos。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧