【問題】:
當鼠標移動到界面外面, 怎麼得到WM_LBUTTONUP消息?
【解決方案】
使用SetCapture函數可以解決,SetCapture函數是讓鼠標捕獲屬於窗口所在的線程。一旦界面捕獲了鼠標,所有的鼠標輸入都響應在該窗口中,不管鼠標的座標是否在界面外面。
具體措施如下:
- void ControlFrameUnit::OnLButtonDown(WPARAM wParam, LPARAM lParam)
- {
- ::SetCapture(the_frame->get_wnd());
- 。。。
- }
- void ControlFrameUnit::OnMouseMove(WPARAM wParam, LPARAM lParam)
- {
- if (::GetCapture() != the_frame->get_wnd())
- {
- return;
- }
- 。。。
- }
- void ControlFrameUnit::OnLButtonUp(WPARAM wParam, LPARAM lParam)
- {
- if (::GetCapture() == the_frame->get_wnd())
- {
- ::ReleaseCapture();
- }
- 。。。
- }