正常情况下,鼠标指针位于哪个窗口区域内,鼠标消息就自动发给哪个窗口。如果调用了SetCapture,之后无论鼠标的位置在哪,鼠标消息都发给指定的这个窗口,直到调用ReleaseCapture或者调用SetCapture设置另一个窗口为止。
很多时候,窗口或控件在鼠标按下后,需要知道鼠标移动和放开的情况,例如按钮在鼠标按下后会变为“按下”状态,鼠标移出按钮区域时“弹起”,所以按钮控件需要在鼠标按下时SetCapture,鼠标放开后ReleaseCapture。
GetCapture只是检查一下当前是哪个窗口捕获了鼠标,通常不需要调用。
用微软的话来说:
Retrieves a handle to the window (if any) that has captured the mouse. Only one window at a time can capture the mouse; this window receives mouse input whether or not the cursor is within its borders.
Return value

Type: HWND

The return value is a handle to the capture window associated with the current thread. If no window in the thread has captured the mouse, the return value is NULL.

Remarks

NULL return value means the current thread has not captured the mouse. However, it is possible that another thread or process has captured the mouse.

尤其要注意,如果返回值为NULL并不一定就是说当前线程没有捕捉到鼠标,完全有可能是另一个线程或进程捕捉到了鼠标。

对于SetCapture/ReleaseCapture 
作用:改变 MOUSEMOVE 消息默认发送方式.
一般移动 鼠标时,鼠标在哪个窗口 MOUSEMOVE 消息就发给哪个窗口(会触发OnIdle),
不管这个窗口是不是当前窗口,也不管是不是拥有焦点,或者有没有激活
而SetCapture 则会改变这种行为.当某个窗口被设置了SetCapture 后
鼠标在全屏范围内移动时MouseMove 消息都会发送给该窗口.
直到 ReleaseCapture,或者在其他窗口点击 才结束

SetCapture、ReleaseCapture、GetCapture相关推荐

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

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

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

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

  3. 理解SetCapture、ReleaseCapture、GetCapture

    正常情况下,鼠标指针位于哪个窗口区域内,鼠标消息就自动发给哪个窗口.如果调用了SetCapture,之后无论鼠标的位置在哪,鼠标消息都发给指定的这个窗口,直到调用ReleaseCapture或者调用S ...

  4. MFC中的SetCapture、ReleaseCapture、GetCapture函数

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

  5. 关于SetCapture() 和 ReleaseCapture()的用法

    http://blog.csdn.net/lanyzh0909/article/details/5543399 查MSND,对SetCapture()函数的说明为:"该函数在属于当前线程的指 ...

  6. windows 编程 —— 消息与参数(滚动条、键盘、鼠标)

    目录: 滚动条 键盘 鼠标 滚动条ScrollBar 发送消息:WM_VSCROLL和WM_HSCROLL 参数wParam:wParam消息参数被分为一个低字组和一个高字组.wParam的低字组是一 ...

  7. JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)

    转自<JS实现漂亮的窗口拖拽效果(可改变大小.最大化.最小化.关闭)>:http://www.jb51.net/article/73157.htm 这篇文章主要介绍了JS实现漂亮的窗口拖拽 ...

  8. SetCapture()和ReleaseCapture()

    查MSND,对SetCapture()函数的说明为:"该函数在属于当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内.同一时刻只能有一 ...

  9. 前端面试题 HTML、CSS、JS、Vue、Es6

    第一部分 HTML&CSS整理答案 什么是HTML5? 答:HTML5是最新的HTML标准. 注意:讲述HTML5推出的设计目的,以及现在市场的使用情况,浏览器支持情况等.... 设计目的 H ...

最新文章

  1. Android RatingBar
  2. tp5+workman
  3. 查询远程或本地计算机的登录账户
  4. 【百度分享】频繁分配释放内存导致的性能问题的分析
  5. pygame显示图片的方法_使用Pygame进行游戏开发(1)
  6. cmake 编译Release版本
  7. 【强化学习】DQN及其延伸算法
  8. spark实验遇到的问题
  9. RocketMQ中的死信队列
  10. python调用手机蓝牙_米家生态出品,易锁宝蓝牙U型锁,让开锁更灵活
  11. Easyui的DateBox日期格式化
  12. Python+OpenGL基本图元绘制综合演示
  13. python 长时间运行 会停止_如何“停止”和“恢复”长时间运行Python脚本?
  14. python插值算法实现_图像插值算法Opencv+python实现
  15. 海康威视相机SDK开发(多个相机)
  16. Android视频录制-MediaRecorder流程
  17. d2rq java,知识图谱学习与实践(6)——从结构化数据进行知识抽取(D2RQ介绍)...
  18. java contains_生成不重复随机数 java
  19. 毕业论文实验方法重复,如何降重?
  20. 钉钉云课堂sign计算方式

热门文章

  1. 国开c语言程序设计作业答案,C语言程序设计参考答案
  2. 设置totalcmd 用文件管理器打开文件所在目录
  3. 【转】夫妻间的魔鬼定律
  4. python将输出保存为txt_Python3将数据保存为txt文件的方法
  5. 北京邮电大学803计算机学科基础综合考试大纲
  6. 索尼相机A卡格式化MP4视频的数据恢复案例
  7. 怎么生成html链接,在HTML中生成链接
  8. 【阿冈观点】超女和搏客,分析和攻击都是两码事!
  9. 【七】springboot整合redis(超详细)
  10. java PDF/Word/Excel文件内容关键字检索