MFC控件随窗口大小变化,多次缩放不改变位置

本文介绍了如何在MFC应用中实现控件随窗口大小变化而保持相对位置不变,通过获取控件原始比例并进行调整。在`OnSize`函数中,使用`GetWindowRect`和`ScreenToClient`获取控件坐标,并存储到结构体列表中。在窗口大小改变时,根据新的窗口尺寸和原始比例重新定位控件。
摘要由CSDN通过智能技术生成

MFC控件随窗口大小变化,多次缩放不影响位置

代码改自:https://blog.csdn.net/u013280734/article/details/51355035

void CMyCefTestDlg::OnSize(UINT nType, int cx, int cy)
{

CDialogEx::OnSize(nType, cx, cy);
// TODO:  在此处添加消息处理程序代码

//最小化判断
if (nType == 1)
{
	return;
}
else
{	
	CRect rect;//获取当前窗口的大小
	for (std::list<control*>::iterator it = m_con_list.begin(); it != m_con_list.end();it++)
	{
		CWnd* pWnd = GetDlgItem((*it)->Id);//获取ID为woc的空间的句柄
		pWnd->GetWindowRect(&rect);
		ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标
		rect.left = (*it)->scale[0] * cx;
		rect.right = (*it)->scale[1] * cx;
		rect.top = (*it)->scale[2] * cy;
		rect.bottom = (*it)->scale[3] * cy;
		pWnd->MoveWindow(rect);//设置控件大小	
	}
}
GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小
return;

}

//在初始化里面调用下面这个函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值