MFC如何使控件大小随着对话框大小自动调整

 我来答
有趣的经典片段
2018-05-29 · 喜欢游喜在各种有趣的电影片段中。。。
有趣的经典片段
采纳数:6 获赞数:41

向TA提问 私信TA
展开全部
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);//设置控件大小
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式