0

我正在阅读有关 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() 返回什么?“捕获”鼠标是什么意思?

4

2 回答 2

3

作为用于鼠标捕获的具体示例:

取一个带有两个按钮的窗口。单击其中一个并按住鼠标按钮。现在将鼠标光标拖到第二个按钮上并释放鼠标按钮。第一个按钮将收到一条WM_LBUTTONUP消息,但第二个按钮不会,即使鼠标光标在它上面。

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

于 2012-07-23T20:59:53.963 回答
2

捕获鼠标通常意味着即使鼠标光标位置超出窗口范围,您仍会收到鼠标事件

GetCapture函数仅返回具有鼠标捕获的当前窗口。

于 2012-07-22T18:36:27.137 回答