2012-08-27 14 views
1

使用在代碼中工作的方法可能沒問題,但不知道到底幕後會發生什麼並不是那麼好的感覺。費用像差距或不完整的工作。使用還是不使用ReleaseMouseCapture()?

我偶然發現ReleaseMouseCapture()和方法(OnMouseUp事件)已經使用,因爲似乎有必要,但我發現使用或不使用這種方法不會影響我的應用程序的可視部分至少

你能不能給我有一些想法,當我們應該使用它?

謝謝。

回答

2

MSDN says:

When an object captures the mouse, all mouse related events are treated as if the object with mouse capture perform the event, even if the mouse pointer is over another object.

取決於你在做什麼它可能會或可能不會是有道理的。我們需要更多的信息。但歸結起來,抓住它的對象將聽取和接收來自鼠標的所有事件。這樣你可以更好地組織你的鼠標邏輯。例如,在屏幕上拖動一個對象對於這一點來說是完美的,因爲對象本身會獲得所有的鼠標事件。

但是,如果你只使用ReleaseCaptureMouse所以不知道你爲什麼使用它。您是否在任何地方使用CaptureMouse

+0

我沒有使用CaptureMosue(在現有類中),但在其他類中是。糾正我,如果我錯了,它聽起來CaptureMouse和RelaseCaptureMouse主要應用於我們正在處理對象的拖放方面。目前,我只處理繪製線條和形狀,所以不需要它。對? –

+0

聽起來不像你正在使用它。我不認爲你需要它。當然,更低層次的理解可能會改變我的想法,但從你所說的話來看,我認爲你不需要它。 – Gabe

1

如果您撥打CaptureMouse,您只需撥打ReleaseMouseCapture,因此在您的情況下,聽起來不像您需要它。

捕獲鼠標意味着即使鼠標移動到控件邊界之外,控件也會收到鼠標消息。它用於拖動&下降的地方,這種下降將發生在控制之外。

1

我在寫代碼捕獲鼠標時使用它,並且在完成時需要釋放鼠標捕獲。

一個典型的例子是拖放控件。當我開始拖動操作時,我有時希望讓應用程序或控件捕捉鼠標,因此無論鼠標的實際位置如何,使用鼠標所做的任何移動都會發送到特定的應用程序或控件。當用戶釋放鼠標按鈕時,我需要釋放鼠標捕獲,以便應用程序/控件停止接收其不感興趣的鼠標事件。