MFC如何使控件大小随着对话框大小自动调整
1个回答
展开全部
void SystemDlg::OnSize(UINT nType, int cx, int cy)
{
CDialogEx::OnSize(nType, cx, cy);
if(nType==1) return; //最小化则什么都不做
CWnd *pWnd;
pWnd = GetDlgItem(Btn); //获取控件句柄
ChangeSize(pWnd,cx,cy); //调用changesize()函数
GetClientRect(&m_rect); //将变化后的对话框设置为旧大小
Invalidate();//声明无效区域
UpdateWindow();//立即更新程序
}
void SystemDlg::ChangeSize(CWnd* pWnd, int cx, int cy)
{
if (pWnd)
{
CRect rect;
pWnd->GetWindowRect(&rect); //获取控件变化前的大小
ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
rect.left=rect.left*cx/m_rect.Width();//调整控件大小 ,cx/m_rect.Width()为对话框在横向的变化比例
rect.right=rect.right*cx/m_rect.Width(); //cx存储的是变化后的宽度,cy存储的是变化后的高度
rect.top=rect.top*cy/m_rect.Height(); //m_rect.height()表示的是变化前主窗体的高度
rect.bottom=rect.bottom*cy/m_rect.Height();
pWnd->MoveWindow(rect);//设置控件大小
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询