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); } } }