首先在主窗口Border属性设置Resizing后,主窗口就可以改变大小了。那么当主窗口改变时,控件怎么改变呢?很EASY啦。我们在OnSize函数里添加如下代码就OK了
CRect TempRect;
//m_ClientRect 在OnInitDialog()里初始化
double multipley=cy/(DOUBLE)m_ClientRect.Height(); //高扩大的比例
double multiplex=cx/(DOUBLE)m_ClientRect.Width();//宽扩大的比例
HWND ChildWhd=::GetWindow(m_hWnd,GW_CHILD);//获得子窗口
while(ChildWhd)
{
::GetWindowRect(ChildWhd,TempRect);//以屏幕坐标 获得ChildWhd的矩形大小
ScreenToClient(TempRect);//转换成客户坐标
TempRect.left*=multiplex;
TempRect.top*=multipley;//依次求出扩大后的大小
TempRect.right*=multiplex;
TempRect.bottom*=multipley;
::MoveWindow(ChildWhd,TempRect.left,TempRect.top,TempRect.Width(),TempRect.Height(),0);//改变控件大小及位置
ChildWhd=::GetNextWindow(ChildWhd,GW_HWNDNEXT);//遍历下一个控件
}
GetClientRect(m_ClientRect);//保存现在主窗口的大小
InvalidateRect(false);//重绘窗口