MFC 改变对话框 CDialog 的大小 ,控件随之变化

1.设置对话框属性为Border:Resezing

如下图所示

看一下资源文件里面发生了什么变化

IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
IDD_CHARTDEMO_DIALOG DIALOGEX 0, 0, 878, 543
STYLE DS_SETFONT | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME

 

2.初始化的时候,

CRect ViewRect;
    GetClientRect(&ViewRect);
    TRACE(_T(" View:T=%d,B=%d,L=%d,R=%d\n"),ViewRect.top,ViewRect.bottom,ViewRect.left,ViewRect.right);
    // m_MsDataGrid.SetWindowPos(this,ViewRect.top,ViewRect.left,ViewRect.Width(),ViewRect.Height(),SWP_SHOWWINDOW|SWP_NOZORDER);
    if (m_ChartCtrl.GetSafeHwnd())
    {
        m_ChartCtrl.MoveWindow(CRect(165,00,ViewRect.Width(),ViewRect.Height()),TRUE);
    }

3.onsize

void CChartDemoDlg::OnSize(UINT nType, int cx, int cy)
{
    CDialog::OnSize(nType, cx, cy);

    if (nType==SIZE_RESTORED)
    {

        CRect ViewRect;
        GetClientRect(&ViewRect);
        TRACE(_T(" View:T=%d,B=%d,L=%d,R=%d\n"),ViewRect.top,ViewRect.bottom,ViewRect.left,ViewRect.right);
        // m_MsDataGrid.SetWindowPos(this,ViewRect.top,ViewRect.left,ViewRect.Width(),ViewRect.Height(),SWP_SHOWWINDOW|SWP_NOZORDER);
        if (m_ChartCtrl.GetSafeHwnd())
        {
            m_ChartCtrl.MoveWindow(CRect(165,0,ViewRect.Width(),ViewRect.Height()),TRUE);
        }

    }
}
posted @ 2014-05-07 17:17  Alex_CC  阅读(936)  评论(0)    收藏  举报