Revision: 13698
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 2, 2009 19:57 by jimfred
Initial Code
// This OnSize function resizes one large control in a dialog. // The one control grows horizontally and vertically to fill the dialog. It's position remains unchanged. // Other controls (buttons etc) would typically be above the one resizable control. // How to add OnSize: // [1] add to .h: afx_msg void OnSize(UINT nType, int cx, int cy); // [2] add to message map in .cpp: ON_WM_SIZE() // [3] add this OnSize function. void CMyDlg::OnSize(UINT nType, int formWidthArg, int formHeightArg) { CDialog::OnSize(nType, formWidthArg, formHeightArg); // Let dialog resize itself. // http://www.codersource.net/mfc_resize_controls.html // http://wwwusers.brookes.ac.uk/p0071643/resize.htm // get pointer to the control to be resized dynamically CWnd* pCtl = GetDlgItem(IDC_MSFLEXGRID1); if (!pCtl) { return; } // control may not exist yet. CRect rectCtl; // Allocate CRect for control's position. pCtl->GetWindowRect(&rectCtl); // Get control's position. ScreenToClient(&rectCtl); // Convert from absolute screen coordinates to dialog-relative coordinates. // Now resize the control dynamically by calling MoveWindow // rectCtl.left is assumed to be the left, bottom and right margin for the control. pCtl->MoveWindow( rectCtl.left, // x. remains unchanged rectCtl.top, // y. remains unchanged formWidthArg - 2 * rectCtl.left, // w. Grow to fill horizontally formHeightArg - rectCtl.top - rectCtl.left, // h. Grow to fill vertically TRUE) ; return; } // OnSize()
Initial URL
Initial Description
This OnSize function resizes one large control in a dialog. The one control grows horizontally and vertically to fill the dialog. It's position remains unchanged. Other controls (buttons etc) would typically be above the one resizable control.
Initial Title
MFC, resize control in CDialog app
Initial Tags
c
Initial Language
C++