`
daojin
  • 浏览: 678079 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

追根究底之以不变求万变:利用SetCapture捕获鼠标

阅读更多
凡事都是一个“变”字,究天地之变化,研日月之更替。
到如今,程序也晓得72般变化,莫非是猴子转世?
可惜,我有照妖镜,任你如何变,我都能让你现原形!!!

在JavaScript中和Windows SDK编程中都有这个函数。
本文解决了则么使用SetCapture的问题:
经研究发现,
    并不能简单地理解为“捕获”;
原因如下:
    它有时候会引起程序出现”漏斗“!!!!什么原因呢????
     比如在WM_PAINT事件中都出现漏斗!!
     在Default中也出现漏斗!!
我的问题是:
     它在忙吗??
答案是:
     不!!
追根究底:
      因为它捕捉了所有的消息!!!
      包括,光标消息。而当时的光标消息是漏斗!!!
      而DefaultWindowProc默认的处理方式是
      "不论如何,保持不变!!"
以不变求万变:
      既然"不论如何,保持不变!!”,那么漏斗是如何“变”出来的呢??
不是“我变”就是“它变”:
      既然我“孙猴子”变不出来,那肯定是“如来佛”变出来的撒!!!
关于如来佛的传说:
      佛说:我不入地狱,谁入地狱.
     我说:如今到处是天堂,没有地狱可去呀。
      佛说:唉!是啊。我找了好久都没找到地狱。。我的泪
      我说:那就算了呗!也是,在这盛世中,你也只能做个泥菩萨了。
      于是,佛一生气,就随便找个地方钻了进去。。。。。。
      它来到了微软的操作系统中!真他妈的狠。。。。。
解决方法:
    应在OnButtonDown或者
    LBUTTONDOWN
   RBUTTONDOWN
   中进行设置

问题1:什么时候用ReleaseCapture呢?
    没有做任何限制,也就是说如果您不想使用默认的,也就是失去焦点才释放,可以自行设置什么时候释放。

问题2:系统什么时候默认调用ReleaseCapture呢?
  此问题经研究发现:
    系统会默认调用ReleaseCapture地。。。。。
    就是当当前窗口失去焦点时。
 
可以用GetCapture试一下,看能得到原来的Hwnd不能?
    
   

分享到:
评论

相关推荐

    易语言解决捕获鼠标时鼠标位置问题

    易语言解决捕获鼠标时鼠标位置问题源码,解决捕获鼠标时鼠标位置问题,SetCapture,ReleaseCapture

    VC中如何捕获和释放鼠标

    CWnd的成员函数SetCapture和ReleaseCapture可以实现对鼠标的捕获和关闭对鼠标的捕获,允许对椭圆的托动和窗口的滚动。这个例子还可以学习逻辑坐标和设备坐标等坐标系的变换。

    setCapture和releaseCapture的小应用

    从网上看到setCapture方法,了解了一下,大体是这样的意思,当在IE文档某个区域中使用了这个方法,并且写了onclick或者 onmouse***等有关的鼠标事件方法,那么它就会监视相应的鼠标操作,即使你的鼠标移出了IE,它也一样能...

    VB利用API监听鼠标运作

    内容索引:VB源码,系统相关,鼠标 利用API函数监听鼠标运作,打开系统的记事本程序、画图程序以及DOS提示符,同进监听鼠标的单击、双击、滚轮运作等,还可以控制其它的应用程序。

    易语言模拟鼠标拖动变形

    易语言模拟鼠标拖动变形源码,模拟鼠标拖动变形,SetCapture,ReleaseCapture

    VC++鼠标捕捉的使用方法

    Windows 95 程序设计中的一个小例子。今天再次复习一遍。 学习鼠标捕捉的使用方法: SetCapture() ReleaseCapture(); 我自己学习的日志存档。

    Javascript 事件捕获的备忘(setCapture,captureEvents)

    object.setCapture() 当一个object的被 setCapture 后,他的方法将会被继承到整个文档进行捕获。 当不需要把方法继承到整个文档捕获时,要用 object.releaseCapture() Mozilla 也有类似的功能,方法稍微不同 ...

    JS setCapture 区域外事件捕捉

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

    MFC屏幕取色器源码下载

    // 一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标 // 是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如 // 果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时 // 系统才将鼠标...

    HTML中setCapture、releaseCapture 使用方法浅析

    setCapture可以将鼠标事件锁定在指定的元素上,当元素捕获了鼠标事件后,该事件只能作用在当前元素上。 以下情况会导致事件锁定失败: 当窗口失去焦点时,锁定的事件,自动就会取消。 alert也会导致事件的锁定取消...

    IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法

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

    OPENGL鼠标键盘移动3d物体

    OPENGL鼠标键盘移动3d物体 void CCY457OpenGLView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default switch (nChar) { case VK_UP: m_...

    JS高级拖动技术 setCapture,releaseCapture

    setCapture 的意思就是设置一个对象的方法被触发的范围,或者作用域。

    HTML中的setCapture和releaseCapture使用介绍

    所以,如果是一个很小的页面对象,比如一个直径5px的圆点,如果没有setCapture和 releaseCapture,那么在鼠标按住之后,快速的移动鼠标,就有可能鼠标移动走了,但是小圆点还在原地,就是因为下一次的mousemove事 ...

    鼠标移入移出事件模块

    删除鼠标移入移出事件,删除所有鼠标移入移出事件,添加鼠标移入移出事件,消息钩子回调,鼠标移入移出事件,执行子程序_,取鼠标所在窗口句柄_,CallWindowProc,SetWindowLong,GetCursorPos,ReleaseCapture,SetCapture,...

    JS拖动技术 关于setCapture使用

    JS拖动技术 关于setCapture使用,学习js拖动效果的朋友可以参考下。

    js 鼠标拖动对象 可让任何div实现拖动效果

    js鼠标拖动对象: 代码如下: //定义鼠标拖动对象 drag=function (a,o){ var d=document;if(!a)a=window.event; if(!a.pageX)a.pageX=a.clientX; if(!a.pageY)a.pageY=a.clientY; var x=a.pageX,y=a.pageY; if(o....

    易语言鼠标手势例程

    易语言鼠标手势例程源码,鼠标手势例程,回调函数,取动作方向文本,GetCapture,SetCapture,ReleaseCapture,CallWindowProcA

Global site tag (gtag.js) - Google Analytics