怎么知道鼠标点击了窗口外的其他地方?

cibiren2009 2010-01-22 09:03:37
我的程序有一个对话框窗口A,我希望鼠标单击窗口A

之外的任何地方,(例如,其他程序的窗口,或者这

个程序的其他窗口),
做某些事情,
问题是:
窗口A怎么知道鼠标单击了它之外的任何地方

...全文
1064 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cibiren2009 2010-01-26
  • 打赏
  • 举报
回复
我的问题提法不合适,另加帖子了:
http://topic.csdn.net/u/20100126/15/37082a0c-23b5-4f0d-9546-b713e5028654.html?93423
cibiren2009 2010-01-26
  • 打赏
  • 举报
回复
我想用一个对话框myDlg来模拟弹出式菜单,
当点击主窗口某按钮时,显示弹出式菜单,
点击任何其他方时,隐藏myDlg,怎么做?
难道要在任何其他窗口里面,加上鼠标单击事件,来隐藏这个myDlg?
有什么好办法?
lllyyy2403 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cibiren2009 的回复:]
  用SetCapture,那这个窗口就强行拦截了其他窗口的鼠标事件,影响了其他窗口的行为呀
[/Quote]
那就用全局鼠标钩子信息(WM_MOUSE)吧,可以勾到鼠标的坐标位置的。
cibiren2009 2010-01-26
  • 打赏
  • 举报
回复
用SetCapture,那这个窗口就强行拦截了其他窗口的鼠标事件,影响了其他窗口的行为呀
cibiren2009 2010-01-26
  • 打赏
  • 举报
回复
问题是这样的:
有5个窗口,A,B,C,D,他们的最终基类都是MFC的CWnd类

我的主窗口A内嵌入了子窗口B,C,D,
我希望在B窗口内单击,窗口C显示,在D窗口或其他程序的窗口内点击,,
窗口C隐藏。
窗口A,B,C的代码是我写的,
而窗口D的类代码是别人写的,不能修改
怎样让D窗口受到鼠标点击,隐藏窗口C呢?
菜鸟二号 2010-01-22
  • 打赏
  • 举报
回复
trackmouseevent();
参数自己百度吧
zyq5945 2010-01-22
  • 打赏
  • 举报
回复
SetCapture
函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。
函数原型:HWND SetCapture(HWND hwnd);
参数:
hWnd:当前线程里要捕获鼠标的窗口句柄。
返回值:返回值是上次捕获鼠标的窗口句柄。如果不存在那样的句柄,返回值是NULL。

备注:只有前台窗口才能捕获鼠标。如果一个后台窗口想捕获鼠标,则该窗口仅为其光标热点在该窗口可见部份的鼠标事件接收消息。另外,即使前台窗口已捕获了鼠标,用户也可点击该窗口,将其调入前台。当一个窗日不再需要所有的鼠标输入时,创建该窗口的线程应当调用函数ReleaseCapture来释放鼠标。此函数不能被用来捕获另一进程的鼠标输入。
Windows 95:调用SetCaptune会引起失去鼠标捕获的窗口接收一个WM_CAPTURECHANGED消息。
速查:头文件:Winuser.h:输入库:user32.lib。


ReleaseCapture
函数功能:该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。
函数原型:BOOL ReleaseCapture(VOlD)
参数:无。
返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetlastError函数。
备注:应用程序在调用函数SetCaPture之后调用此函数。
Windows 95:调用ReleaseCapture会引起失去鼠标捕获的窗日接收一个WM_CAPTURECHANGED消息。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本:Windows
CE:1.0及以上版本;头文件:winuser.h;输入库:User32.lib。
lsvine 2010-01-22
  • 打赏
  • 举报
回复
原来如此 不错
fandh 2010-01-22
  • 打赏
  • 举报
回复
1楼说的可以实现的
当然,SetCapture 后取得鼠标点,还要判断鼠标点是否在窗口内!
hzy694358 2010-01-22
  • 打赏
  • 举报
回复
我是来mark的
schlafenhamster 2010-01-22
  • 打赏
  • 举报
回复
查WM_MOUSEMOVE的point

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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