现在突然遇到了这个问题, 程序运行时,需要在Dialog中要用鼠标移动控件的位置, 
如文本框, 图片, 按钮等. 现在不知该怎样实现, 希望各位大侠帮忙, 在线等待, 也欢迎大家来讨论.

解决方案 »

  1.   

    在移动的位置调用
    Movewindow()就 可以;额
      

  2.   

    BOOL MoveWindow(
      HWND hWnd,      // handle to window
      int X,          // horizontal position
      int Y,          // vertical position
      int nWidth,     // width
      int nHeight,    // height
      BOOL bRepaint   // repaint option
    );
      

  3.   

    不行吧, 首先应该得到控件的hwnd, 但是有多个控件, 应该先确定Cursor下面的是控件还是Dlg, 如果是控件才可以移动, 这里是怎么判断的? 我一步就搞不定了,  
    请  arvid_gs(west) 大侠详细指点. MoveWindow 或 SetWindowPos也许都行, 但具体怎么实现我是不会的.
      

  4.   

    ChildWindowFromPoint来判断是否选中了控件
      

  5.   

    void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE );
      

  6.   

    我想应该是这样的:在鼠标移动的时候判断鼠标左键是否按下,当前具备焦点的控件是否是你所需要的控件,把该控件MoveWindow到当前点
      

  7.   

    BOOL CTitleHeightDlg::PreTranslateMessage(MSG* pMsg) 
    {
    switch (pMsg->message)
    {
    case WM_LBUTTONDOWN:
    if (pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd
    || pMsg->hwnd == m_edit1.m_hWnd)
    ::SendMessage(pMsg->hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    break;
    }

    return CDialog::PreTranslateMessage(pMsg);
    }
      

  8.   

    多谢以上诸位的帮助, 你们的方法可以在MFC的程序中正常运行, 但是我在COM中生成Dlg后却不能使用ChildWindowFromPoint得到控件HWND, 不知什么原因, 现在给先结贴, 如果大家有兴趣可以继续讨论.