关于SetCapture() 和 ReleaseCapture()的使用方法
方法 关于 使用
2023-09-27 14:27:04 时间
查MSND,对SetCapture()函数的说明为:“该函数在属于当前线程的指定窗体里设置鼠标捕获。一旦窗体捕获了鼠标,全部鼠标输入都针对该窗体,不管光标是否在窗体的边界内。同一时刻仅仅能有一个窗体捕获鼠标。假设鼠标光标在还有一个线程创建的窗体上,仅仅有当鼠标键按下时系统才将鼠标输入指向指定的窗体。”一開始我看这个解释误觉得了仅仅要在属于窗体里的一个线程调用了SetCapture(hWnd)把hWnd设为当前的窗体句柄,那么以后的全部窗体消息都会发到我们指定的那个窗体消息队列中。这种理解是错误的!!!在你调用SetCapture(hWnd)函数后,仅仅是可以捕获onmousedown、onmouseup、onmousemove、onclick、ondblclick、onmouseover和onmouseout鼠标消息,可是一般我们是捕获onmousemove和onmouseup两个消息。须要仅仅注意最后一句“假设鼠标光标在还有一个线程创建的窗体上,仅仅有当鼠标键按下时系统才将鼠标输入指向指定的窗体”的解释,就是即使你在一个窗体线程里对了了SetCapture(),但你在别的窗体的上点击了相同会把鼠标消息发个这个窗体而是我们通过调用SetCapture()设定那个窗体。由于当鼠标在窗体外面点击的时候,被点击的窗体获得焦点,原来的SetCapture()也就失效了。
当你不在须要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉,否则别的线程想调用就会失败。记住:SetCapture()和ReleaseCapture()必须成对呈现。
相关文章
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- /storage/emulated/0/Download/copy_download.db (Permission denied)错误的处理方法
- 关于Date(int, int, int)‘ is deprecated的处理解决方法
- 关于SQL与ORACLE创建本地临时表和全局临时表的方法和区别
- 关于IIS部署.net项目问题解决方法
- 关于C++中vector和set使用sort方法进行排序
- iOS:关于A页面跳转到B页面,B页面跳转到C页面,点击C页面直接返回到A页的几种方法
- 关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)
- 数据结构:简单排序方法(插入排序和起泡排序)
- 列表常用方法
- 关于java中BufferedReader的read()及readLine()方法的使用心得
- 关于处理iis8.0中设置Request.BinaryRead 不允许操作的解决方法
- PHP is_callable 方法
- 关于Cocos2d-x中自己定义的类的名字和Cocos2d-x引擎库中的类的名字重复的解决方法
- 关于在Android中添加事件监听器的方法
- 如何用两种不同的方法动态绘制饼状图
- 常见的用户密码加密方式以及破解方法
- 解决Can‘t uninstall ‘docker‘. No files were found to uninstall.不能卸载方法
- 工具及方法 - 关于Yammer的介绍