关于SetCapture() 和 ReleaseCapture()的使用方法

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

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

时间: 2024-08-23 13:14:29

关于SetCapture() 和 ReleaseCapture()的使用方法的相关文章

HTML中setCapture、releaseCapture 使用方法浅析

本文给大家简单介绍了下html中的高级拖动技术setCapture.releaseCapture的使用方法,有需要的小伙伴可以参考下 1. setCapture 简介 setCapture可以将鼠标事件锁定在指定的元素上,当元素捕获了鼠标事件后,该事件只能作用在当前元素上. 以下情况会导致事件锁定失败: 当窗口失去焦点时,锁定的事件,自动就会取消. alert也会导致事件的锁定取消.解决办法是在alert之后再次锁定. 鼠标右键也会导致事件解锁. setCapture只可以作用于以下事件: on

关于SetCapture() 和 ReleaseCapture()的用法[转]

查MSND,对SetCapture()函数的说明为:“该 函数在属于当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内.同一时刻只能有一个窗口捕获 鼠标.如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口.”一开始我看这个解释误认为了只要在属于窗口里的一个 线程调用了SetCapture(hWnd)把hWnd设为当前的窗口句柄,那么以后的所有窗口消息都会发到我们指定的那个窗口消息队列中.这样的理解是错误的

IE8利用setCapture和releaseCapture解决iframe的拖拽事件

最近有个需求须要实现左右拖拽功能,页面右边是个iframe页面,在chrome测试通过之后,发现在ie8上面效果不是很理想,最后查找资料得知可以使用ie自带的setCapture和releaseCapture来解决. sideDragBar.on('mousedown.sideMenu', function(e){ this.setCapture && this.setCapture();// ie下可以使用setCapture来解决object拖拽问题 startDragging(e);

理解SetCapture、ReleaseCapture、GetCapture

理解SetCapture.ReleaseCapture.GetCapture 正常情况下,鼠标指针位于哪个窗口区域内,鼠标消息就自动发给哪个窗口.如果调用了SetCapture,之后无论鼠标的位置在哪,鼠标消息都发给指定的这个窗口,直到调用ReleaseCapture或者调用SetCapture设置另一个窗口为止.很多时候,窗口或控件在鼠标按下后,需要知道鼠标移动和放开的情况,例如按钮在鼠标按下后会变为“按下”状态,鼠标移出按钮区域时“弹起”,所以按钮控件需要在鼠标按下时SetCapture,鼠

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

查MSND,对SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内.同一时刻只能有一个窗口捕获鼠标.如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口.”一开始我看这个解释误认为了只要在属于窗口里的一个线程调用了SetCapture(hWnd)把hWnd设为当前的窗口句柄,那么以后的所有窗口消息都会发到我们指定的那个窗口消息队列中.这样的理解是错误的!!!

常用的兼容IE和火狐FF等浏览器的js方法(js中ie和火狐的一些差别)

介绍了网页上常用的IE/火狐兼容性该页的做法,并给出了代码,相当实用了.为了方便大家阅读代码,以下以 IE 代替 Internet Explorer,以 MF/FF 代替 Mozzila Firefox .以下进入正题: //window.event IE:有window.event对象 FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMove(event) 解决方法:var event = event || window.

常用的兼容IE和火狐FF等浏览器的js方法

这是一篇收集的文档,介绍了网页上常用的IE/火狐兼容性该页的做法,并给出了代码,相当实用了.为了方便大家阅读代码,以下以 IE 代替 Internet Explorer,以 MF/FF 代替 Mozzila Firefox .以下进入正题: //window.event IE:有window.event对象 FF:没有window.event对象.可以通过给函数的参数传递event对象.如onmousemove=doMouseMove(event) 解决方法:var event = event

Javascript学习------网络方法

/* 作者:小白鼠编写时间:2014-11-3 内容:js常用的dom操作方法 */ (function (win) { win.FC = win.FC || {}; FC = function (id) { return new FC.fn.init(id); } FC.fn = FC.prototype = { init: function (id) { this.Selector = this.$(id); }, //遍历执行 each: function (fn) { var len =

etCapture() 和 ReleaseCapture()的用法

1. 函数功能:在当前线程的指定窗口里设置鼠标捕获.一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内还是边界外.同一时刻只能有一个窗口捕获鼠标. 2. 失效条件: A. 当鼠标在其他窗口按下; B.调用ReleaseCapture释放. 3. SetCapture和ReleaseCapture必须成对出现 通俗来讲,例如:一只羊被一根弹性的绳子(SetCapture)拴在羊圈,羊可以拉长绳子无限制区域活动,但是永远无法摆脱绳子的束缚.除非有其他因素导致绳子断了(Relea