MFC UI大小改变与自适应

文章目录

窗口最大化

  1. 资源视图中开放最大化按钮,添加窗口样式WS_MAXIMIZEBOX
  2. 发送大小改变消息ON_WM_SIZE()
  3. 响应大小改变。
c 复制代码
void CDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialog::OnSize(nType, cx, cy);
    
    //获取改变后窗口大小
	CRect rcClient;
	GetClientRect(&rcClient);

    CRect rcBtn(0, 0, 0, 0);
	if (NULL != GetDlgItem(IDBTN))  //判断控件是否存在,第一次OnSize的时候控件还未创建
	{
	    //获取原始位置、大小
		CRect rcOrigin;
		GetDlgItem(IDBTN)->GetClientRect(rcOrigin);

		//设置新位置、大小。根据改变后的窗口大小等计算新位置。
		rcBtn.left = cx * 4 / 5 - nBtnWidth - 30;
		rcBtn.top = cy - nBtnHeight - 10;
		rcBtn.right = rcBtn.left + nBtnWidth;
		rcBtn.bottom = rcBtn.top + nBtnHeight;
		GetDlgItem(IDBTN)->MoveWindow(rcBtn);
	}
}

EasySize控件自适应大小

实现MFC控件随界面自动拉伸。