当鼠标移动到界面外面, 如何继续得到WM_LBUTTONUP消息
2008-12-27 16:29
323 查看
【问题】:
当鼠标移动到界面外面, 怎么得到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();
}
。。。
}
当鼠标移动到界面外面, 怎么得到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();
}
。。。
}
相关文章推荐
- MFC中鼠标消息的处理--WM_LBUTTONDWON,WM_RBUTTONDWON
- 如何扑捉到WM_NCLBUTTONUP(OnNcLButtonUp)消息
- C# chart,有关如何在鼠标移动到Series上时显示节点及数据 (有待继续更新)
- 移动窗体的函数,在窗体的WM_LBUTTONDOWN消息中,响应下面的函数
- 用WM_MOUSEMOVE消息画轨迹点时,发现鼠标移动很快的时候 只能画出少数几个点。
- 如何让自定义的基于CStatic的控件响应鼠标移动的消息
- 响应了WM_SetCursor消息,如何改变鼠标形状
- 移动鼠标时得不到WM_MOUSEMOVE消息
- 【转csdn论坛贴】请熟悉输入法的高人帮帮忙:截获了WM_IME_COMPOSITION消息,如何得到CompositionString?
- TForm.ShowModal只是接管消息循环,禁止外部键盘和鼠标输入到别的窗口,但并不封锁其它窗口继续获取消息(比如WM_TIMER消息仍可被发送到别的窗口上)
- 如何让自定义的基于CStatic的控件响应鼠标移动的消息
- 浅谈在应用CRectTracker类的程序中响应WM_LBUTTONUP消息
- jquery 如何得到table得到鼠标所在 行号 列号
- MFC简单皮肤颜色绘制(SetDialogBkColor不再被支持,看 WM_CTLCOLOR消息如何百变控件颜色)
- WM_NCHITTEST消息(移动无标题栏窗口)
- xp 不出现登录界面,只有鼠标可以移动解决办法
- unity3d学习笔记(十三)--如何拦截射线碰撞界面的消息
- 如何用JS代码实现鼠标移动,背景变色?
- VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数)及对话框使用位图背景并透明
- bug分享 - 收不到WM_NCLBUTTONUP消息