一般,只有鼠标在CWnd的客户区内,你才能接受到鼠标消息。调用SetCapture后,即使鼠标移动出客户区,你也可以接受到鼠标消息。不过系统中只能有一个程序调用SetCapture,所以你需要在不使用时调用ReleaseCapture释放。而GetCapture可以知道当前哪个窗口调用了SetCapture。由于只能有一个程序调用SetCapture,所以这个函数不如SetWindowsHookEx好用。

常用的是在OnLButtonDown中SetCapture,在OnLButtonUp中ReleaseCapture,这样就可以捕获所有两个消息之间的鼠标移动消息(OnMouseMove),即使鼠标移动到窗口外面。当鼠标在窗口外面点击的时候,被点击的窗口获得焦点,原来的SetCapture也就失效了。

SetCapture和ReleaseCapture必须成对使用。

SetCapture
函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。

函数原型:HWND SetCapture(HWND hwnd);

参数:

hWnd:当前线程里要捕获鼠标的窗口句柄。

返回值:返回值是上次捕获鼠标的窗口句柄。如果不存在那样的句柄,返回值是NULL。

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

ReleaseCapture
函数功能:该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗口接收所有的鼠标输入(无论光标的位置在哪里),除非点击鼠标键时,光标热点在另一个线程的窗口中。

函数原型:BOOL ReleaseCapture(VOlD)

参数:无。

返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetlastError函数。

备注:应用程序在调用函数SetCaPture之后调用此函数。

Windows 95:调用ReleaseCapture会引起失去鼠标捕获的窗日接收一个WM_CAPTURECHANGED消息。

CWnd::SetCapture, ReleaseCapture, GetCapture相关推荐

  1. CWnd SetCapture ReleaseCapture GetCapture

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一般,只 ...

  2. SetCapture, ReleaseCapture, GetCapture

    来自:http://blog.csdn.net/weiwangchao_/article/details/6955970 一般,只有鼠标在CWnd的客户区内,你才能接受到鼠标消息.调用SetCaptu ...

  3. SetCapture/ReleaseCapture 使用场景

    说明1  ::SetCapture(GetDlgItem(IDC_XX)->m_hWnd); or GetDlgItem(IDC_XX)->SetCapture(); 要与ReleaseC ...

  4. API - SetCapture(),ReleaseCapture与GetCapture - 鼠标移动的捕获与释放

    演示效果: 添加控件:Form1,Button1,Label1,Label2,Timer1 GetCapture:返回当前捕获鼠标输入的窗口的句柄 SetCapture():通过句柄设置指定窗口来捕获 ...

  5. 关于SetCapture和GetCapture

    转载地址:http://blog.csdn.net/laowu_/article/details/6839345 正常情况下,鼠标指针位于哪个窗口区域内,鼠标消息就自动发给哪个窗口.如果调用了SetC ...

  6. 正確使用 SetCapture ReleaseCapture [譯]

    本文描述瞭如何正確處理自定義窗口和控件中的鼠標捕獲操作. 原文鏈接: http://www.codeproject.com/Tips/127813/Using-SetCapture-correctly ...

  7. SetCapture ReleaseCapture

    函数功能:该函数在属于当前线程的指定窗体里设置鼠标捕获.一旦窗体捕获了鼠标,全部鼠标输入都针对该窗体,不管光标是否在窗体的边界内.同一时刻仅仅能有一个窗体捕获鼠标.假设鼠标光标在还有一个线程创建的窗体 ...

  8. js setCapture() releaseCapture() 获取页面上发生的所有的事件

    setCapture() IE独有 div.setCapture() 这个div会获取页面上发生的所有的事件 捕获到自己身上来 div.releaseCapture() ;//清除 setCaptur ...

  9. 理解SetCapture、ReleaseCapture、GetCapture(控制了消息发往哪个窗口,是理解消息的关键)

    理解SetCapture.ReleaseCapture.GetCapture 正常情况下,鼠标指针位于哪个窗口区域内,鼠标消息就自动发给哪个窗口.如果调用了SetCapture,之后无论鼠标的位置在哪 ...

最新文章

  1. HDU 6208 The Dominator of Strings ——(青岛网络赛,AC自动机)
  2. Hibernate调用存储过程
  3. 数据结构-王道-绪论
  4. html中给文章怎么设置行高,css如何设置行距?
  5. sql出现无法启动(model数据库)
  6. Openpyxl:读取/写入Excel文件的Python模块
  7. 数据库在什么情况下适合添加索引
  8. 【信号与系统实验】实验五 信号抽样与恢复
  9. 【人工智能】一文读懂人脸识别技术
  10. 微服务调用链追踪中心搭建
  11. ftp客户端安装,六款可以安装的ftp客户端
  12. SIP12 脚 电磁隔离放大器IC 模拟信号隔离放大器 电磁耦合隔离放大器
  13. 【java毕业设计】基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码)——个人博客系统
  14. Type-infity Wasserstein Ball
  15. http 304响应的理解
  16. ATSHA204A加密芯片攻略——使用篇
  17. Android——下载apk文件,并在通知栏显示下载进度
  18. vsftpd lftp
  19. Task3 矩阵分解
  20. 超赞干货!2016年新鲜出炉的20款网页开发工具推荐

热门文章

  1. 2244小游戏HTML5小游戏,2244小游戏:王者荣耀干扰正常游戏扣多少分 举报不成功是什么意思...
  2. Box3 代码教程 (一)
  3. 响应式布局——视口viewport和常用单位
  4. 【PR】简单一招教你使用蒙版做文字动画
  5. 美国康奈尔大学BioNB441元胞自动机MATLAB应用
  6. 结构方程模型(SEM)高阶应用系列
  7. TensorFlow 2 和 Keras 高级深度学习:11~13
  8. 30. 小浣熊干脆面
  9. Altium FPC软硬结合板日志
  10. ​UG塑胶模具设计结构分析是如何挤压成型的