首页 > 代码库 > 在对话框上拖动按钮并移动该按钮(改写CXXButton::PreTranslateMessage,然后MoveWindow)
在对话框上拖动按钮并移动该按钮(改写CXXButton::PreTranslateMessage,然后MoveWindow)
[cpp] view plain copy
- // 派生自CButton类,主要过滤WM_LBUTTONDOWN 、WM_LBUTTONUP和WM_MOUSEMOVE消息。
- BOOL m_bFlag = FALSE; // 成员变量,用来标示鼠标是否按下, 初始化为FALSE
- CPoint m_pt; // 成员变量,用来保存当前坐标值
- BOOL CXXButton::PreTranslateMessage(MSG* pMsg)
- {
- // TODO: Add your specialized code here and/or call the base class
- switch(pMsg->message)
- {
- case WM_LBUTTONDOWN:
- {
- m_pt = pMsg->pt;
- m_bFlag = TRUE;
- }
- break;
- case WM_LBUTTONUP:
- {
- m_bFlag = FALSE;
- }
- break;
- case WM_MOUSEMOVE:
- {
- if(m_bFlag)
- {
- int cx = pMsg->pt.x - m_pt.x;
- int cy = pMsg->pt.y - m_pt.y;
- CRect rc;
- GetWindowRect(&rc);
- GetParent()->ScreenToClient(&rc);
- int nWidth = rc.Width();
- int nHeight = rc.Height();
- rc.left += cx;
- rc.top += cy;
- rc.right = rc.left + nWidth;
- rc.bottom = rc.top + nHeight;
- MoveWindow(rc);
- m_pt = pMsg->pt;
- }
- }
- break;
- default:
- break;
- }
- return CButton::PreTranslateMessage(pMsg);
- }
http://blog.csdn.net/visualeleven/article/details/7177775
在对话框上拖动按钮并移动该按钮(改写CXXButton::PreTranslateMessage,然后MoveWindow)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。