mfc子窗体OnSize后,最小化还原,控件全没了

sksgod sksgod 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个程序中,创建了一个非模态对话框,为了更加方便,我设置了这个对话框能自由调整窗口大小,控件随之而变大

void Cdialogservice::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);

static RECT LastWindowRect = {0, 0, 0, 0};//用来保存窗口上一次的大小
CWnd *hWin;//构造一个句柄
int ux = cx - LastWindowRect.right;

//求出窗口的水平变化量
int uy = cy - LastWindowRect.bottom;

//求出窗口的竖直变化量
if((hWin = GetDlgItem(IDC_LIST1)) != NULL) //IDC_LIST1为控件的ID号
{
RECT rect;
hWin->GetWindowRect(&rect);//获得控件的大小
ScreenToClient(&rect);//设备到客户
rect.right += ux;//
rect.bottom += uy;
hWin->MoveWindow(&rect);//改变控件大小
}

if( hWin = m_StatBar)
{
RECT rect;
hWin->GetWindowRect(&rect);//获得控件的大小
ScreenToClient(&rect);//设备到客户
rect.right += ux;//
rect.bottom += uy;
hWin->MoveWindow(&rect);//改变控件大小
}

LastWindowRect.right = cx;
LastWindowRect.bottom = cy;
}

这样设置了之后,一切正常,不过我把窗口最小化,然后还原,这样窗口上的控件都没了,一片空白,我把onsize去掉后,又能正常显示,这种问题是哪里的原因呢,因该怎样解决
...全文

相关推荐

MFC控件自适应窗体改变大小

用MFC做的一个简单的控件自适应窗体改变大小的程序,方便自己学习上传,有需要的可以免积分下载,谢谢!

xqwangc

MFC中子对话框的大小随tab控件的大小改变而改变

MFC中,包含多个对话框,子对话框在Tab控件中显示,让子对话框中的控件跟随主对话框大小变化而变化,字体也能够缩放,但是不能加载图片控件,只对控件和字体缩放,单个对话框也适用,简单易懂。主要有一个CLout类,这个demo中包含三个子对话框,都能够缩放。也可以用于Tab控件的学习使用。

louyaqing121

mfc控件以及字体随窗体变化而缩放

vs2010工程,控件的大小以及字体可以随着窗体缩放,控件包含:tablectrl,static,edit,combobox,listctrl

a1164076705

MFC窗口控件随窗口大小进行自适应

此工程实现了MFC窗口控件随窗口大小进行自适应,封装了WidgetResize类用来调整控件大小位置,非常好用。

mark-puls

MFC 对话框最大化时控件也随比例最大化或者还原

MFC 对话框最大化时控件也随比例最大化或者还原 1. 在oninitdlg中 计算出当前对话框的大小与最大化后大小,注意要用float值,不然误差很大. CRect rect; ::GetWindowRect(m_hWnd,rect); ScreenToClient(rect); m_nDlgWidth = rect.right - rect.left; m_nDlgHeight = rect.bottom - rect.top; //计算分辨率 m_nWidth = GetSystemMetrics(SM_CXSCREEN); m_nHeight = GetSystemMetrics(SM_CYSCREEN); //计算放大倍数 m_Multiple_width = float(m_nWidth)/float(m_nDlgWidth); m_Mutiple_heith = float(m_nHeight)/float(m_nDlgHeight); change_flag=TRUE;//这个是成员变量bool形,用来判断onsize执行时oninitdlg是否已经执行了

yateic
评论 7
收藏 已收藏
分享
返回顶部
sksgod
界面 15,976 成员 115,866 内容