【问题】:
当鼠标移动到界面外面, 怎么得到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();
- }
- 。。。
- }