在对话框的Onsize()中加入如下代码,实现当对话框改变大小后,按钮IDC_BUTTON1左上角坐标(cx/2,cy/2),宽cx/10,高cy/10(cx,cy:对话框新的大小) 
void CTestMoveControlInWindowDlg::OnSize(UINT nType, int cx, int cy) 
{
    CWnd *pWnd=GetDlgItem(IDC_BUTTON1);
    pWnd->GetClientRect(rect);
    ::MoveWindow(pWnd->m_hWnd,cx/2,cy/2,cx/10,cy/10,TRUE);
}

解决方案 »

  1.   

    to jakieliu,
    thk u。但是我需要的是sdk。
      

  2.   

    因为对话框创建的时候要调用OnSize(),而此时按钮还没有生成,因此不能得到它的指针,
    要出错.必须保证第一次OnSize()代码不被执行,如下改正:
    void CTestMoveControlInWindowDlg::OnSize(UINT nType, int cx, int cy) 
    {
        static int n=0;
        if (n)
        {
            CWnd *pWnd=GetDlgItem(IDC_BUTTON1);
            ::MoveWindow(pWnd->m_hWnd,cx/2,cy/2,cx/10,cy/10,TRUE);
        }
        n++;

      

  3.   

    就按jakieliu的方法,只不过在sdk里在消息循环Wm_size 里修改button 变化!!:)
      

  4.   

    static int cx,cy;
    case WM_SIZE:
      cx = LOWORD(lParam);
      cy = HIWORD(wParam);
      MoveWindow(hwndchild,cx/2,cy/2,cx/10,cy/10,TRUE);
      return 0;
    hwndchild为子窗口句柄
      

  5.   

    to all:
    那么对button上面字体的改变呢?