There are times when we need to dynamically resize the controls inside the Windows/Dialogs. This article tries to give a small sample of how to resize a Tree Control inside a CFormView derived class dynamically. This can then be extended to all other MFC Controls.
The following article assumes the application is already created and Applications, dialogs and controls are in place. It tries to resize a Tree control dynamically whenever the ON_WM_SIZE message is dispatched to the Application.
void CControllerView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); // Declare a CRect to get the co-ordinates CRect l_formRect; GetClientRect(&l_formRect); // get pointer to the control to be resized dynamically CTreeCtrl* pTreeCtrl; pTreeCtrl = (CTreeCtrl *)GetDlgItem(IDC_TREEFOLDER); //Calculate the new width of the control to be resized long newWidthTree = l_formRect.Width()/3; if(newWidthTree > 250) newWidthTree = 250; long newWidthTab = l_formRect.Width() - newWidthTree ; long newHeightTree = l_formRect.Height(); // Now resize the control dynamically by calling MoveWindow pTreeCtrl->MoveWindow(l_formRect.TopLeft().x+5, l_formRect.TopLeft().y+25, (long)newWidthTree, (long)newHeightTree-25, TRUE); // repaint control pTreeCtrl->RedrawWindow(); } }