`
daojin
  • 浏览: 690014 次
  • 性别: 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`函数是`CWnd`类中的一个重要方法,用于...

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

    本篇文章将深入探讨如何在VC++环境下利用API函数`SetCapture()`和`ReleaseCapture()`来实现鼠标捕捉功能。 首先,理解鼠标捕捉的概念:当一个窗口捕获了鼠标,所有的鼠标输入(包括鼠标移动和按钮点击)都将被该...

    易语言捕获与释放鼠标源码-易语言

    在计算机编程中,捕获鼠标通常是指将鼠标的控制权暂时转移到特定的程序,使得鼠标的所有操作都只在这个程序内生效,而释放鼠标则是恢复鼠标在桌面或其他应用程序中的正常行为。 捕获鼠标在各种应用中都有用到,例如...

    鼠标和键盘.PPT 处理键盘消息 鼠标消息的捕获

    不过,一旦完成相关操作,应当通过调用`ReleaseCapture`来释放对鼠标的捕获,以防止其他窗口无法正常接收鼠标事件。 接下来,我们转向键盘消息的处理。Windows系统为每个按键定义了一个设备无关的编码,称为虚拟码...

    VB利用API监听鼠标运作

    标题中的“VB利用API监听鼠标运作”指的是使用Visual Basic(VB)编程语言,通过调用Windows API(应用程序接口)来捕获和响应鼠标的活动。API是操作系统提供给开发者的一组函数,允许程序与操作系统进行交互,实现...

    setCapture和releaseCapture的小应用

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

    在对话框中利用鼠标左键拖放bmp图片

    2. **捕获鼠标**:在WM_LBUTTONDOWN消息处理函数中,记录下鼠标按下时的位置,同时调用CWnd::SetCapture()方法来捕获鼠标,这样即使鼠标离开对话框,仍能接收到鼠标消息。 3. **处理鼠标移动**:当收到WM_MOUSEMOVE...

    VC++消息映射与处理\在视图窗口实现捕捉鼠标

    此外,还可以利用`CWnd::GetCapture()`检查当前是否已捕获鼠标,以及`CWnd::SetCapture()`和`ReleaseCapture()`来动态控制捕获状态。 实例032——在视图窗口实现捕捉鼠标,可能包含了上述的代码示例和实际操作演示...

    跟踪鼠标的移动

    在编程领域,尤其是在Windows应用程序开发中,经常需要处理与用户交互相关的事件,其中之一就是跟踪鼠标的移动。在MFC(Microsoft Foundation Classes)框架下开发的单文档界面(Single Document Interface, SDI)...

    C++鼠标操作实例C++鼠标操作实例

    如果需要在窗口外部也能追踪鼠标,可以使用`SetCapture`函数来捕获鼠标,`ReleaseCapture`则用于释放鼠标,使其回到正常状态。 7. **示例代码**: 在`mouse Point`文件中,很可能包含了一个简单的示例程序,演示...

    ddf.zip_Capture_DEMO_mouser

    当用户点击某个窗口后,该窗口可以使用SetCapture函数来捕获鼠标,即使鼠标移动到其他窗口,该窗口仍会接收到鼠标的输入消息,直到调用ReleaseCapture或者鼠标被其他窗口捕获为止。 这个压缩包文件可能包含以下内容...

    鼠标获取窗口句柄

    5. **API_俘获鼠标**:`SetCapture`函数允许程序捕获鼠标输入,即使鼠标离开窗口,系统也会将所有鼠标消息发送到指定的窗口。这在需要连续跟踪鼠标移动,即使鼠标离开当前窗口的情况下很有用。 6. **API_取鼠标位置...

    VC++ 实现限制鼠标的活动区域.rar

    2. **捕获鼠标**:在窗口初始化或特定事件触发时,调用`SetCapture()`函数来捕获鼠标。这将确保所有后续的鼠标消息都会被你的应用程序接收。 3. **设置鼠标活动区域**:使用`ClipCursor()`函数,传入一个`RECT`...

    限定鼠标区域LimitCursorPos限定鼠标区域LimitCursorPos

    `SetCapture`用于捕获鼠标输入,这样当鼠标移动时,即使离开了原窗口,也会继续接收鼠标的移动消息。而`ReleaseCapture`则用于释放捕获,恢复正常的行为。 以下是一个简单的C++示例,展示了如何限定鼠标在矩形区域...

    学习鼠标编程和wingdows消息机制.pptx

    捕获鼠标可以使用`CWnd::SetCapture()`函数,而在完成操作或响应鼠标弹起(比如`WM_LBUTTONUP`)时,应通过`CWnd::ReleaseCapture()`释放鼠标。捕获鼠标可以确保所有后续的鼠标消息被发送到当前捕获的窗口,即使鼠标...

    Visual C++ 鼠标及键盘

    4. **鼠标捕获**:如果你想在鼠标离开窗口时仍然接收鼠标消息,可以调用`SetCapture`函数来捕获鼠标。 键盘操作的知识点如下: 1. **键盘按键**:按下键盘上的键会产生`WM_KEYDOWN`消息,释放则产生`WM_KEYUP`消息...

    限制鼠标活动区域

    开发者可以利用API函数,如SetCapture和ReleaseCapture,来捕获和释放鼠标输入。当捕获窗口时,所有鼠标事件都会被该窗口接收,即使鼠标移动到窗口外部也是如此。通过这种方式,我们可以创建一个虚拟的“活动区域”...

    VB 鼠标拖动截屏(仿QQ截屏效果)

    1. **初始化**:在Form的Load事件中,设置Form的属性以允许透明度和鼠标捕捉,然后调用`SetCapture`函数开始捕获鼠标。 2. **鼠标按下**:当`MouseDown`事件触发时,记录鼠标按下时的位置作为截屏的起始点。 3. **...

    鼠标捕捉区域鼠标捕捉区域

    在Windows API中,可以使用`SetCapture`函数来捕获鼠标,而使用`ReleaseCapture`函数来释放捕获。捕获鼠标后,所有的鼠标消息(如WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_RBUTTONDOWN等)都将被发送到当前捕获的窗口,...

Global site tag (gtag.js) - Google Analytics