/ Published in: C++
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.
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.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
// 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()