在对话框上拖动按钮并移动该按钮(改写CXXButton::PreTranslateMessage,然后MoveWindow)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在对话框上拖动按钮并移动该按钮(改写CXXButton::PreTranslateMessage,然后MoveWindow)相关的知识,希望对你有一定的参考价值。

 

[cpp] view plain copy
 
  1. // 派生自CButton类,主要过滤WM_LBUTTONDOWN 、WM_LBUTTONUP和WM_MOUSEMOVE消息。  
  2.   
  3. BOOL m_bFlag = FALSE; // 成员变量,用来标示鼠标是否按下, 初始化为FALSE  
  4. CPoint m_pt; // 成员变量,用来保存当前坐标值  
  5.   
  6. BOOL CXXButton::PreTranslateMessage(MSG* pMsg)   
  7. {  
  8.     // TODO: Add your specialized code here and/or call the base class  
  9.     switch(pMsg->message)  
  10.     {  
  11.     case WM_LBUTTONDOWN:  
  12.         {  
  13.             m_pt = pMsg->pt;  
  14.             m_bFlag = TRUE;  
  15.         }  
  16.         break;  
  17.   
  18.     case WM_LBUTTONUP:  
  19.         {  
  20.             m_bFlag = FALSE;  
  21.         }  
  22.         break;  
  23.   
  24.     case WM_MOUSEMOVE:  
  25.         {  
  26.             if(m_bFlag)  
  27.             {  
  28.                 int cx = pMsg->pt.x - m_pt.x;  
  29.                 int cy = pMsg->pt.y - m_pt.y;  
  30.   
  31.                 CRect rc;  
  32.                 GetWindowRect(&rc);  
  33.                 GetParent()->ScreenToClient(&rc);  
  34.                 int nWidth = rc.Width();  
  35.                 int nHeight = rc.Height();  
  36.   
  37.                 rc.left += cx;  
  38.                 rc.top += cy;  
  39.                 rc.right = rc.left + nWidth;  
  40.                 rc.bottom = rc.top + nHeight;  
  41.   
  42.                 MoveWindow(rc);  
  43.   
  44.                 m_pt = pMsg->pt;  
  45.             }  
  46.         }  
  47.         break;  
  48.   
  49.     default:  
  50.         break;  
  51.     }  
  52.     return CButton::PreTranslateMessage(pMsg);  
  53. }  
http://blog.csdn.net/visualeleven/article/details/7177775

 

以上是关于在对话框上拖动按钮并移动该按钮(改写CXXButton::PreTranslateMessage,然后MoveWindow)的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止按钮推翻拖动手势

可拖动按钮时如何将单击事件设置为禁用?

LibGDX - InputProcessor - 如果用户将手指从代表在 X 上移动的按钮拖动到代表在 Y 上移动的按钮

如何通过拖动鼠标 QT 检查按钮?鼠标移动事件

iOS 接触开始

仿苹果返回首页按钮(移动端div拖动 返回首页)