尽管设计时指定align text = center,但是给对话框(showmaxmized)后位置就不在中心了;
另外对于不同分辨率的环境下,怎么达到以上目的呢?

解决方案 »

  1.   

    在窗口的WM_SIZE消息处理函数中使用:
    GetWindowRect
    SCreenToClient
    MoveWindow
      

  2.   

    你截获窗口还原的消息处理之,参考:
    void C***Dlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else if (nID == SC_MINIMIZE)
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    else if(nID == SC_MAXIMIZE)
    {

    CDialog::OnSysCommand(nID, lParam);
    MaxOrRestore();
    ListCtrlOnSize();
    StatTextOnSize();
    }
    else if(nID == SC_RESTORE)//还原消息
    {
    CDialog::OnSysCommand(nID, lParam);
    }
    else
    {
    CResizableDialog::OnSysCommand(nID, lParam);
    }
    }
      

  3.   

    重载WM_SIZE消息
    然后MoveWindow使位置在中心,这样可以改变大小时,都成比例的在中心位置