在基于对话框的MFC应用程序中,可以在OnLButtonDown(UINT nFlags, CPoint point)函数中添加下面的语句
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0); //拖动对话框的上任意位置都可以移动对话框(主菜单区除外)可以点击对话框任意位置拖动对话框,在VC2005的Window窗体应用程序中能否也实现同样的功能?即点击窗体的任意位置拖动窗体移动?void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0); //拖动对话框的上任意位置都可以移动对话框(主菜单区除外) CDialog::OnLButtonDown(nFlags, point);
}

解决方案 »

  1.   

    SendMessage(WM_SYSCOMMAND, SC_MOVE, 0);一般是在WM_NCHITTEST 中,HTCLIENT 改为 HTCAPTION
      

  2.   

    处理 WM_NCHITTEST
    UINT CTestDlg::OnNcHitTest(CPoint point) 
    {
    // TODO: Add your message handler code here and/or call default
    UINT uHitTest = CDialog::OnNcHitTest(point);
    if(uHitTest == HTCLIENT)
    {
    uHitTest = HTCAPTION;
    }
    return uHitTest;
    }
      

  3.   

    不好意思,我还是没有搞懂,这段程序是用在"Windows 窗体应用程序"中吗?
      

  4.   

    我看你这程序是一个在MFC下建立的一个基于对话框类的应用程序啊!
      

  5.   

    在你的窗口消息处理函数例如
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    中添加消息处理:
    case WM_NCHITTEST:
    lResult = DefWindowProc(hWnd, message, wParam, lParam);
    if(lResult == HTCLIENT)
    {
    lResult = HTCAPTION;
    }
    return lResult;
      

  6.   

    不好意思,我还是没有搞懂,Windows 窗体应用程序消息处理函数在什么地方?
      

  7.   

    我的天了,建议先买几本书学习一下基础知识。
    使用 VC2005 添加Win32项目,向导会自动产生基本代码,
    其中就有WndProc函数,可以使用搜索工具查找出来。
      

  8.   

    "我的天了,建议先买几本书学习一下基础知识。
    使用 VC2005 添加Win32项目,向导会自动产生基本代码,
    其中就有WndProc函数,可以使用搜索工具查找出来。"我的问题不是Win32项目, 是Windows窗体项目,不知道您是否看清楚题目?