博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于SetCapture() 和 ReleaseCapture()的使用方法
阅读量:7247 次
发布时间:2019-06-29

本文共 684 字,大约阅读时间需要 2 分钟。

   查MSND,SetCapture()函数的说明为:“该函数在属于当前线程的指定窗体里设置鼠标捕获。一旦窗体捕获了鼠标,全部鼠标输入都针对该窗体,不管光标是否在窗体的边界内。同一时刻仅仅能有一个窗体捕获鼠标。假设鼠标光标在还有一个线程创建的窗体上,仅仅有当鼠标键按下时系统才将鼠标输入指向指定的窗体。”一開始我看这个解释误觉得了仅仅要在属于窗体里的一个线程调用了SetCapture(hWnd)hWnd设为当前的窗体句柄,那么以后的全部窗体消息都会发到我们指定的那个窗体消息队列中。这种理解是错误的!!!在你调用SetCapture(hWnd)函数后,仅仅是可以捕获onmousedownonmouseuponmousemoveonclickondblclickonmouseoveronmouseout鼠标消息,可是一般我们是捕获onmousemoveonmouseup两个消息。须要仅仅注意最后一句“假设鼠标光标在还有一个线程创建的窗体上,仅仅有当鼠标键按下时系统才将鼠标输入指向指定的窗体”的解释,就是即使你在一个窗体线程里对了了SetCapture(),但你在别的窗体的上点击了相同会把鼠标消息发个这个窗体而是我们通过调用SetCapture()设定那个窗体。由于当鼠标在窗体外面点击的时候,被点击的窗体获得焦点,原来的SetCapture()也就失效了。

    当你不在须要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉,否则别的线程想调用就会失败。记住:SetCapture()和ReleaseCapture()必须成对呈现。

转载地址:http://tynbm.baihongyu.com/

你可能感兴趣的文章
Java获取url地址图片
查看>>
spring maven cxf jackson restful
查看>>
Spring MVC过滤器-字符集过滤器(CharacterEncodingFilter)
查看>>
理解etcd集群
查看>>
char类型是否有符号与不同编译环境相关
查看>>
移动端切图备忘(别人的)
查看>>
Ubuntu下安装配置VNC远程工具
查看>>
Android Cordova微信插件动态包名处理
查看>>
Java调用Matlab程序
查看>>
angular ng-include 指令的使用
查看>>
Common Lisp通过CFFI调用C动态库
查看>>
Beyond SQLi: Obfuscate and Bypass
查看>>
Spring(二):配置和简单使用
查看>>
Java中的try-catch机制的要点
查看>>
web.xml 中的listener、 filter、servlet 加载顺序及其详解
查看>>
group by,having,where
查看>>
shiro概念(转)
查看>>
Android中attrs.xml
查看>>
Eclipse开启错误“Failed to create the java virtual mach
查看>>
Struts2.3.15.2配置
查看>>