MFC之窗体移动(实测)

1、添加WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE三个消息
2、在三个消息中分别添加以下代码


void Cusb_testDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    SetCapture();

    CDialog::OnLButtonDown(nFlags, point);
}

void Cusb_testDlg::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    static CPoint PrePoint = CPoint(0, 0);  
    if(MK_LBUTTON == nFlags)  
    {  
        if(point != PrePoint)  
        {  
            CPoint ptTemp = point - PrePoint;  
            CRect rcWindow;  
            GetWindowRect(&rcWindow);  
            rcWindow.OffsetRect(ptTemp.x, ptTemp.y);  
            MoveWindow(&rcWindow);  
            return ;  
        }  
    }  
    PrePoint = point;  


    CDialog::OnMouseMove(nFlags, point);
}

void Cusb_testDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    ReleaseCapture();


    CDialog::OnLButtonUp(nFlags, point);
}

Cusb_testDlg::修改为自己工程的即可

 

这是之前在网上找的一段代码,结合自己的工程现在做一个简单的整理

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 VC++ MFC 中添加的全过程如下: 1. 打开 VC++ MFC 应用程序,创建一个新的 MFC 应用程序。 2. 在“工具箱”中选择“对话框”控件,然后在主界面上单击并拖动以创建新的对话框。 3. 右键单击新创建的对话框,并选择“Add Class”选项。在“Add Class”对话框中,选择“MFC Class from TypeLib”选项,并选择“Microsoft Forms 2.0 Form”控件,然后单击“Finish”按钮。 4. 在“Add Member Variables”对话框中,选择要添加的控件,并为该控件命名,并单击“OK”按钮。 5. 在新创建的类中,添加以下代码: ``` BOOL CMyForm::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: Add extra initialization here m_ctlMyButton.SubclassDlgItem(ID_MY_BUTTON, this); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } ``` 6. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Class”属性,将其更改为新创建的类名。 7. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Style”属性,将其更改为“Popup”。 8. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“ExStyle”属性,将其更改为“WS_EX_TOOLWINDOW”。 9. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Caption”属性,将其更改为“”(空字符串)。 10. 在新创建的类中,添加以下代码: ``` void CMyForm::OnOK() { // TODO: Add your specialized code here and/or call the base class CDialogEx::OnOK(); } void CMyForm::OnCancel() { // TODO: Add your specialized code here and/or call the base class CDialogEx::OnCancel(); } ``` 11. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Menu”属性,将其更改为“None”。 12. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“System Menu”属性,将其更改为“False”。 13. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Minimize Box”属性,将其更改为“False”。 14. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Maximize Box”属性,将其更改为“False”。 15. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Resizable”属性,将其更改为“False”。 16. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Visible”属性,将其更改为“False”。 17. 在新创建的类中,添加以下代码: ``` void CMyForm::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); // TODO: Add your message handler code here } BOOL CMyForm::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default return CDialogEx::OnEraseBkgnd(pDC); } ``` 18. 在新创建的类中,添加以下代码: ``` BEGIN_MESSAGE_MAP(CMyForm, CDialogEx) ON_WM_SIZE() ON_WM_ERASEBKGND() END_MESSAGE_MAP() ``` 19. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Event”属性,将其更改为“OnInitDialog”事件,并将其关联到新创建的类的“OnInitDialog”方法。 20. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Event”属性,将其更改为“OnOK”事件,并将其关联到新创建的类的“OnOK”方法。 21. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Event”属性,将其更改为“OnCancel”事件,并将其关联到新创建的类的“OnCancel”方法。 22. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Event”属性,将其更改为“OnSize”事件,并将其关联到新创建的类的“OnSize”方法。 23. 在“资源视图”中,选择“IDD_MY_DIALOG”对话框,并在“属性视图”中选择“Event”属性,将其更改为“OnEraseBkgnd”事件,并将其关联到新创建的类的“OnEraseBkgnd”方法。 24. 最后,在新创建的类中,添加头文件“afxctl.h”和“afxwin.h”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值