1.在对话框的头文件中添加
POINT old;
2.在OnInitialDlg()中添加
CRect rect;
GetClientRect(&rect);
old.x = rect.right - rect.left;
old.y = rect.bottom - rect.top;
3.在添加消息函数 OnSize()
if (nType == SIZE_RESTORED || nType == SIZE_MAXIMIZED)
{
resize();
}
4.resize()函数
void CMy12Dlg::resize(void)
{
float fsp[2];
POINT Newp;//获取现在对话框的大小
CRect recta;
GetClientRect(&recta);//取客户区的大小
Newp.x = recta.right - recta.left;
Newp.y = recta.bottom - recta.top;
fsp[0] = (float)Newp.x / old.x;
fsp[1] = (float)Newp.y / old.y;
CRect Rect;
int woc;
CPoint OldTLPoint,TLPoint;//左上角
CPoint OldBRPoint,BRPoint;//右下角
HWND hwndChild = ::GetWindow(m_hWnd,GW_CHILD);//列出所有控件
while(hwndChild)
{
woc = ::GetDlgCtrlID(hwndChild);//取得ID
GetDlgItem(woc)->GetWindowRect(Rect);
ScreenToClient(Rect);
OldTLPoint = Rect.TopLeft();
TLPoint.x = long(OldTLPoint.x * fsp[0]);
TLPoint.y = long(OldTLPoint.y * fsp[1]);
OldBRPoint = Rect.BottomRight();
BRPoint.x = long(OldBRPoint.x * fsp[0]);
BRPoint.y = long(OldBRPoint.y * fsp[1]);
Rect.SetRect(TLPoint,BRPoint);
GetDlgItem(woc)->MoveWindow(Rect,TRUE);
hwndChild = ::GetWindow(hwndChild,GW_HWNDNEXT);
}
old = Newp;
}