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

1作用及參数编辑

函数原型:HWND SetCapture(HWND hwnd)。
參数:
hWnd:当前线程里要捕获鼠标的窗体句柄

返回值:返回值是上次捕获鼠标的窗体句柄

假设不存在那样的句柄。返回值是NULL

备注:仅仅有前台窗体才干捕获鼠标。

假设一个后台窗体想捕获鼠标,则该窗体仅为其光标热点在该窗体可见部份的鼠标事件接收消息。另外,即使前台窗体已捕获了鼠标。用户也可点击还有一个窗体。将其调入前台。当一个窗体不再须要全部的鼠标输入时。创建该窗体的线程应当调用函数ReleaseCapture来释放鼠标。

此函数不能被用来捕获还有一进程的鼠标输入。

Windows 95:调用SetCapture会引起失去鼠标捕获的窗体接收一个WM_CAPTURECHANGED消息。
速查:头文件:Winuser.h:输入库:user32.lib。

Javascript鼠标捕获
鼠标捕获(setCapture)作用是将鼠标事件捕获到当前文档的指定的对象。这个对象会为当前应用程序或整个系统接收全部鼠标事件。

2鼠标事件

url=7dqggZDt8OGe0lVrAEgDdNl4zCJ1BWVX_Yj6_95JmTMPsvXfRhb6mj9_0uFAUD-Zp9vRBcQlG4g42a-6R031Ca#" class="nslog:1019" title="编辑本段" style="text-decoration:none; color:rgb(136,136,136); height:15px; line-height:16px; padding-left:18px; background-color:transparent; font-size:12px; font-family:宋体; display:block">编辑

setCapture捕获下面鼠标事件:onmousedown、onmouseup、onclick、ondblclick、onmouseover和onmouseout。

程序中主要是要捕获onmousemove和onmouseup事件。
msdn的介绍中还说到setCapture有一个bool參数,用来设置在容器内的鼠标事件是否都被容器捕获。
容器就是指调用setCapture的对象,大概意思就是:
參数为true时(默认)容器会捕获容器内全部对象的鼠标事件,即容器内的对象不会触发鼠标事件(跟容器外的对象一样)。
參数为false时容器不会捕获容器内对象的鼠标事件,即容器内的对象能够正常地触发事件和取消冒泡。

ReleaseCapture

url=8DHny2dyFblt43mcNT8pU_jlRFI7iV-9WsmP14KztbV6OyMcWnGB7J2FxA5tAC1SIsPw-oLX955G7hUmj96Ohq" style="text-decoration:none; color:rgb(160,160,160); padding-left:29px; line-height:25px; display:block; width:35px; height:25px; border:1px solid rgb(230,230,230); background-color:rgb(253,253,253); padding-right:0px">编辑

函数功能:该函数从当前线程中的窗体释放鼠标捕获,并恢复通常的鼠标输入处理。捕获鼠标的窗体接收全部的鼠标输入(不管光标的位置在哪里),除非点击鼠标键时,光标热点在还有一个线程的窗体中。
函数原型:BOOL ReleaseCapture(VOlD)
參数:无。
返回值:假设函数调用成功,返回非零值。假设函数调用失败,返回值是零。若想获得很多其它的错误信息,请调用GetlastError函数。

备注:应用程序在调用函数SetCaPture之后调用此函数。
Windows 95:调用ReleaseCapture会引起失去鼠标捕获的窗体接收一个WM_CAPTURECHANGED消息。
速查:Windows NT:3.1及以上版本号;Windows:95及以上版本号:Windows CE:1.0及以上版本号;头文件:winuser.h。输入库:User32.lib。

SetCapture ReleaseCapture的更多相关文章

  1. SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP

    今天在窗口上绘图的时候,遇到一个问题:在特殊情况下,当用户在窗口中按下鼠标左键,然后移动到窗口外松开鼠标左键,这时程序中只能捕获到 WM_LBUTTONDOWN(按下) 和 WM_MOUSEMOVE( ...

  2. SetCapture、ReleaseCapture、GetCapture

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

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

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

  4. 理解SetCapture()和ReleaseCapture()及GetCapture()作用

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

  5. 理解SetCapture、ReleaseCapture、GetCapture(控制了消息发往哪个窗口,即消息窗口)

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

  6. js拖拽效果详细讲解

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 那些ie6已支持的方法属性,成为事实标准。或者方便大家的api

    很多api,都是ie6实现,后来其他w3c或其他浏览器支持,或者用类似的方法模拟 onselectionchange  判断选区改变 ,chrome已支持 Element.contains   判断元 ...

  8. Windows API 学习记录1

    这里面的好多函数不能死记硬背,知道有这个函数就行,等用到了,再回来细看 一.窗口管理函数包括以下几类: 按钮函数(Button) Microsoft提供了对话框和控制来支持应用程序与用户之间的交互通讯 ...

  9. JS拖拽系列--多元素拖拽,面向对象,es6拖拽

    最近不太忙,终于有时间,研究了一下早就想搞定的拖拽系列,先是写了面向过程式的,再做一个面向对象的,再顺便弄弄继承,最后玩一下ES6的class  不觉用了一天多,收获很大.拖拽弄完,想再弄一个拖放. ...

随机推荐

  1. C#中ref参数及out参数对比

    ref 关键字和out关键字均会导致参数通过引用来传递(相同点1).这是两者的共同点. 通过引用传递参数,会使方法中对参数所做的任何修改都将反映在该变量中. 两者还有一个共同点,那就是:若要使用 re ...

  2. tomcat下部署activemq(转)

    转自:http://marshal.easymorse.com/archives/1414 activemq可以单独部署和执行,比如类似ActiveMQ的最简单应用中提到的安装和执行方式.但是有时候需 ...

  3. addEventListener()及attachEvent()区别分析

    Javascript 的addEventListener()及attachEvent()区别分析 Mozilla中: addEventListener的使用方式: target.addEventLis ...

  4. android 播放音乐-进度条

    今天学渣研究了一下使用MediaPlayer播放音乐时加入进度条,进度条如今用的是android自带的seekbar,后期会跟换UI的,在之前可以播放音乐的基础上,如今加入的主要功能有两个: 1实时显 ...

  5. nest expression &amp; Pyparsing

    http://pyparsing.wikispaces.com/ http://bbs.csdn.net/topics/330052586 C++ boost "<([^<> ...

  6. 【C语言】在两个数成对出现的数组中找到一个单独的数。

    //在两个数成对出现的数组中找到一个单独的数.比如{1,2,3.3,1,4.2},即找出4 #include <stdio.h> int find(int arr[], int len) ...

  7. 前端javascript框架之AngularJS学习笔记

    <!doctype html><html lang="en" ng-app><head><meta charset="utf-8 ...

  8. ArcGIS制图——多图层道路压盖处理

    [1]      启动ArcMap,载入各道路要素类.生成名为All-Roads的图层组,如他所看到的,符号级别绘制将对图层组内图层符号起作用: 图层组设置符号等级 [2]      在内容列表中,右 ...

  9. NetBeans 7.2 or 8.0 编辑文件时不显示文件路径。

    NetBeans 7.2 or 8.0 编辑文件时不显示文件路径. 仅仅实用鼠标停在标签上一下,才干够看到.非常不方便. 怎样解: http://plugins.netbeans.org/plugin ...

  10. iOS开发技巧 -- 复用代码片段

    如果你是一位开发人员在开发过程中会发现有些代码无论是在同一个工程中还是在不同工程中使用率会很高,有经验的人会直接封装在一个类里,或者写成一个宏定义或者把这些代码收集起来,下次直接使用,或者放到xcod ...