窗口放大后点击最小化按钮后还原窗口问题

qq_24604661 2019-08-23 03:01:10
在OnInitDialog中用MoveWindow把窗口放大,随后控件也随着窗口放大,这时候点击最小化按钮,窗口隐藏后,接着点击程序图标还原窗口,这个时候就出现问题了,那些随着窗口而放大的控件并没有显示在还原的窗口上,没有放大的控件没出现问题,问下各位大佬这是什么问题导致的,有解决办法吗?
最小化前窗口:
还原后窗口:
这里button1,button2,button3和edit控件都随着窗口放大了,还原后消失了
...全文
355 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24604661 2019-10-21
  • 打赏
  • 举报
回复
已解决 如1楼所说,记录窗口放大前每个控件的Rect,然后还原时,根据这个Rect来重新OnSize
Eleven 2019-08-23
  • 打赏
  • 举报
回复
明显是你的控件的坐标RECT设置有些问题,codeproject上搜索EASYSIZE
大树学长 2019-08-23
  • 打赏
  • 举报
回复
你这样控件随界面变化不对,最小化界面为0所有你的控件也变为0了, 1、你要将软件打开后的默认大小保存起来,在最大化、最小化后恢复默认就要使用这个默认大小 网上找的代码 https://www.cnblogs.com/hikeepgoing/p/6017526.html 2、也不一定要将控件都随界面大小变化,可以只改变控件的位置,因为不管是从最大化恢复默认还是最小化恢复默认都是使用的一个float比例变量,当多次最大化到默认和默认大小到最大化的比例float就会有误差,多次后控件越变显示越小

CRect rect;
				GetDlgItem(woc)->GetWindowRect(&rect);//获得控件的绝对坐标
				ScreenToClient(&rect);//获得相对于主窗体的坐标
				rect.OffsetRect(CSize(0, 0));//要移动的相对位置
				GetDlgItem(woc)->MoveWindow(rect);//移动到目标坐标		
3、最大化、最小化、默认大小 最大化:https://blog.csdn.net/bigtree_mfc/article/details/98748801 最小化:CDialogEx::ShowWindow(SW_SHOWMINIMIZED);

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧