这个函数是别人写的我觉得很好,有了它实现控件缩放很容易,具体函数如下:
ControlSize()
{
float fsp[2];//分别存放客户区宽、高缩放比例
CRect recta; //存放原来未缩放时的客户区大小
CRect clientrc; //用来存放当前放大后的客户区大小
fsp[0]=(float)clientrc.Width()/recta.Width(); //控件宽度的缩放比
fsp[1]=(float)clientrc.Height()/recta.Height(); //控件高度的缩放比
CRect Rect;
int woc; //记录获取的控件ID值
CPoint OldTLPoint,TLPoint; //未缩放控件的左上角
CPoint OldBRPoint,BRPoint; //未缩放控件的右下角
HWND hwndChild=::GetWindow(m_hWnd,GW_CHILD); //列出所有控件
while(hwndChild)
{
woc=::GetDlgCtrlID(hwndChild);//取得控件ID
GetDlgItem(woc)->GetWindowRect(&Rect); //根据控件ID获取控件大小
ScreenToClient(&Rect); //转换成屏幕坐标
OldTLPoint = Rect.TopLeft();
TLPoint.x = long(OldTLPoint.x*fsp[0]); //缩放后控件左上角x的值
TLPoint.y = long(OldTLPoint.y*fsp[1]); //缩放后控件左上角y的值
OldBRPoint = Rect.BottomRight();
BRPoint.x = long(OldBRPoint.x *fsp[0]); //缩放后控件右下角x的值
BRPoint.y = long(OldBRPoint.y *fsp[1]); //缩放后控件右下角y的值
Rect.SetRect(TLPoint,BRPoint);
GetDlgItem(woc)->MoveWindow(Rect,TRUE);//将控件调整到新的位置
hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT); 获取下一个控件
}
}