截获鼠标按下并移动的消息

纸-_-鸢 2013-07-31 12:32:27
MFC中怎么截获单击鼠标并移动的消息(鼠标单击移动),即同时响应WM_LBUTTONDOWN和WM_MOUSEMOVE消息。谢谢解答!!!
...全文
326 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2013-08-04
  • 打赏
  • 举报
回复
“怎么把这两个消息合并呢?譬如是鼠标按下并移动才弹出对话框?” 3楼 我不是说了吗? 关键是 OnMouseMove 的位置,对话框是 检测不到 控件的 OnMouseMove 的
纸-_-鸢 2013-08-03
  • 打赏
  • 举报
回复
引用 1 楼 u010588063 的回复:
BOOL CcontrolTestDlg::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message ==WM_MOUSEMOVE) { ::PostMessageA(this->m_hWnd,WM_MOUSEMOVE,NULL,NULL); } if (pMsg->message==WM_LBUTTONDOWN) { ::PostMessageA(this->m_hWnd,WM_LBUTTONDOWN,NULL,NULL); } return CDialogEx::PreTranslateMessage(pMsg); } void CcontrolTestDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 MessageBox("OnMouseMove"); CDialogEx::OnMouseMove(nFlags, point); } void CcontrolTestDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 MessageBox("OnLButtonDown"); CDialogEx::OnLButtonDown(nFlags, point); }
怎么把这两个消息合并呢?譬如是鼠标按下并移动才弹出对话框?
纸-_-鸢 2013-08-03
  • 打赏
  • 举报
回复
引用 2 楼 xianglitian 的回复:
这两个消息是不会同时发生的 一般是在WM_LBUTTONDOWN中设置一个按下标识 然后再WM_MOUSEMOVE判断这个标识 当然还要在WM_LBUTTONUP中清除
可是按这种方法WM_LBUTTONUP基本响应不到。
u010588063 2013-07-31
  • 打赏
  • 举报
回复
BOOL CcontrolTestDlg::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 if (pMsg->message ==WM_MOUSEMOVE) { ::PostMessageA(this->m_hWnd,WM_MOUSEMOVE,NULL,NULL); } if (pMsg->message==WM_LBUTTONDOWN) { ::PostMessageA(this->m_hWnd,WM_LBUTTONDOWN,NULL,NULL); } return CDialogEx::PreTranslateMessage(pMsg); } void CcontrolTestDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 MessageBox("OnMouseMove"); CDialogEx::OnMouseMove(nFlags, point); } void CcontrolTestDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 MessageBox("OnLButtonDown"); CDialogEx::OnLButtonDown(nFlags, point); }
schlafenhamster 2013-07-31
  • 打赏
  • 举报
回复
OnMouseMove 里检查 UINT nFlags, nFlags   指示各种虚拟按键是否按下 ,此参数可以是任何下列值的组合:   MK_CONTROL当CTRL键按下时。   MK_LBUTTON当鼠标左键按下时。   MK_MBUTTON当鼠标中键按下时。   MK_RBUTTON当鼠标右键按下时.   MK_SHIFT当SHIFT按下时。
向立天 2013-07-31
  • 打赏
  • 举报
回复
这两个消息是不会同时发生的 一般是在WM_LBUTTONDOWN中设置一个按下标识 然后再WM_MOUSEMOVE判断这个标识 当然还要在WM_LBUTTONUP中清除

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧