在使用VC编写基于MFC的对话框程序时,经常要将窗口在最大化和默认窗体之间进行切换,默认情况下点击最大化按钮后,对话框会全屏,但是里面的组件却没有按相同比例放大。以下给出实现的相关代码。
//最大化,获取当前对话框大小
CRect rectDlg;
::GetWindowRect(m_hWnd,rectDlg); //该函数返回指定窗口的边框矩形的尺寸。
//以相对于屏幕坐标左上角的屏幕坐标给出
// m_hWnd是当前对话框句柄,在头文件定义
m_intDlgWidth = rectDlg.right - rectDlg.left;
m_intDlgHeight = rectDlg.bottom - rectDlg.top;
//SM_CXSCREEN,SM_CYSCREEN 以像素为单位计算的屏幕尺寸。
m_nWidth = GetSystemMetrics(SM_CXSCREEN);
m_nHeight = GetSystemMetrics(SM_CYSCREEN);
m_floatMultipleWidth = float(m_nWidth)/float(m_intDlgWidth);
m_floatMultipleHeight = float(m_nHeight)/float(m_intDlgHeight);
int i;
for (i = 1000;i <= 1004; ++i)
{
//将当前对话框中的控件尺寸和按比例放大后的尺寸保存起来。
//(1000~1004为控件ID号,下同。)
SaveSize(i);
}
for (i = 1007;i <= 1008; ++i)
{
SaveSize(i);
}
for (i = 1010;i <= 1022; ++i)
{
SaveSize(i);
}
for (i = 1024;i <= 1030; ++i)
{
SaveSize(i);
}
for (i = 1035;i <= 1052; ++i)
{
SaveSize(i);
}
for (i = 1055;i <= 1058; ++i)
{
SaveSize(i);
}
for (i = 1060;i <= 1076; ++i)
{