c++ - 引用 GetCapture() 函数捕获鼠标意味着什么?

标签 c++ winapi visual-c++ mouseevent

我正在阅读有关 GetCapture() 函数的信息,它是 mfc 的一部分。 我仍然不清楚它的作用,以及捕获鼠标的含义,正如它在此处所说:

http://msdn.microsoft.com/en-us/library/dxa5eaaa(v=vs.80).aspx

在我的书中是这样使用的:

 void CSketcherView::OnLButtonUp(UINY nFlags, CPoint point)
 {
   if(this == GetCapture())
       ReleaseCapture();                    // Stop capturing mouse messages

   // ... add information to document
}

那么 GetCapture() 返回什么? “捕获”鼠标是什么意思?

最佳答案

以鼠标捕获为目的的具体例子:

拿一个有两个按钮的窗口。单击其中之一并按住鼠标按钮。现在将鼠标光标拖到第二个按钮上并释放鼠标按钮。第一个按钮将收到 WM_LBUTTONUP 消息,但第二个按钮不会收到消息,即使鼠标光标位于它上面也是如此。

当第一个按钮收到 WM_LBUTTONDOWN 消息时,它捕获鼠标。当窗口捕获鼠标时,它保证它将接收所有后续鼠标事件(特别是 WM_LBUTTONUP 消息),即使鼠标已被拖出其窗口边界。这很重要,以便它可以将按下按钮与按下按钮消息相匹配并保持正确的状态。这对于可用性也很重要(如果您单击一个按钮并意外移动到另一个按钮,您既不想触发第一个按钮也不想触发第二个按钮)。

关于c++ - 引用 GetCapture() 函数捕获鼠标意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602911/

相关文章:

c++ - 保留模距离的符号

c++ - C++20 是否为 "overflow"的有符号整数很好地定义了左移?

c++ - QT:QXmlStreamReader 总是返回 "Premature End of Document"错误

c++ - 我怎样才能解决我的win32读取图像文件代码中的这个错误

c - 如何从资源中在 PictureBox 上显示图像?

c++ - 从 VC++ 应用程序使用 VSTO 插件触发删除 Outlook 电子邮件附件

C++11 constexpr 导致编译器的内部错误 (C1001)

c++ - STL max_element 未使用我的类中的重载运算符 operator<

c++ - BitBlt 两个图像在另一个之上

visual-c++ - MSVC - 通过 Makefile 创建静态库