MFC VS2013 界面初始化不能显示

时间:2022-09-20 17:26:49
单文档,
初始化为最大化方法:

1. 在app的InitInstance中, if(!ProcessShellCommand(cmdInfo))之前, ParseCommandLine(cmdInfo)之后,    加一句m_nCmdShow=SW_MAXIMIZE; 

2. 在CMainFrame的PreCreateWindow中; 指定cs.cx=GetSystemMetrics(SM_CXSCREEN); cs.cy=GetSystemMetrics(SM_CYSCREEN); 

3. 在app的InitInstance()中把 m_pMainWnd->ShowWindow(SW_SHOW); 改为 m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); 

如果是普通的单文档,这些方法可以解决,但是我的VIEW 是基于CFormView,用这些方法第一次可以实现运行程序最大化,但是第2,次就不可以。
这到底是什么问题,为什么不能界面窗口初始不能最大化?
现场等待,送妹子。

5 个解决方案

#1


什么叫“但是第2,次就不可以”

#2


就是只有第一次可以,显示是最大,后面的全不是最大化

#3


我现在的问题是,单文档,VIEW基于CFormView,界面初始化不能最大化。可以试试你们

#4


vc2010中CFormView启动最大化窗口问题  2011-12-12 11:12:11|  分类: windows编程 |  标签: |举报 |字号大

小 订阅 
在2010中,窗口都有记录上次位置、大小的功能,但在使用CFormView中如果启动时最大化,他并不会最大化,而是先最大化,然后又变成我们画的CFormView一样大了。这倒无所谓,关键的毛病在于那个窗口样式不对了,窗口边缘没了。



解决方法如下:
其实这个CFormView中的OnInitUpdate函数问题,子类继承了这个函数,其中写了以下3句话:
 CFormView::OnInitialUpdate();
 GetParentFrame()->RecalcLayout();
 ResizeParentToFit();
这3句话目的在于使得自己适应当前框架。这可能是个bug,如果去掉最后2行的代码,发现CFormView显示不正常。其中有一个控件是不能正常显示的。


也是运气的成分,我发现如果将这3行代码都注释掉的话,界面就ok了。任何情况下都显示正

搞定了。。。回去研究下原因。

#5


引用 4 楼 hongxiongmm 的回复:
vc2010中CFormView启动最大化窗口问题  2011-12-12 11:12:11|  分类: windows编程 |  标签: |举报 |字号大

小 订阅 
在2010中,窗口都有记录上次位置、大小的功能,但在使用CFormView中如果启动时最大化,他并不会最大化,而是先最大化,然后又变成我们画的CFormView一样大了。这倒无所谓,关键的毛病在于那个窗口样式不对了,窗口边缘没了。



解决方法如下:
其实这个CFormView中的OnInitUpdate函数问题,子类继承了这个函数,其中写了以下3句话:
 CFormView::OnInitialUpdate();
 GetParentFrame()->RecalcLayout();
 ResizeParentToFit();
这3句话目的在于使得自己适应当前框架。这可能是个bug,如果去掉最后2行的代码,发现CFormView显示不正常。其中有一个控件是不能正常显示的。


也是运气的成分,我发现如果将这3行代码都注释掉的话,界面就ok了。任何情况下都显示正

搞定了。。。回去研究下原因。


参照你的方法,我的最大化正常了,但是界面上的控件不正常了,必须拉一下才能完全显示。
请问您找出是什么原因吗?

#1


什么叫“但是第2,次就不可以”

#2


就是只有第一次可以,显示是最大,后面的全不是最大化

#3


我现在的问题是,单文档,VIEW基于CFormView,界面初始化不能最大化。可以试试你们

#4


vc2010中CFormView启动最大化窗口问题  2011-12-12 11:12:11|  分类: windows编程 |  标签: |举报 |字号大

小 订阅 
在2010中,窗口都有记录上次位置、大小的功能,但在使用CFormView中如果启动时最大化,他并不会最大化,而是先最大化,然后又变成我们画的CFormView一样大了。这倒无所谓,关键的毛病在于那个窗口样式不对了,窗口边缘没了。



解决方法如下:
其实这个CFormView中的OnInitUpdate函数问题,子类继承了这个函数,其中写了以下3句话:
 CFormView::OnInitialUpdate();
 GetParentFrame()->RecalcLayout();
 ResizeParentToFit();
这3句话目的在于使得自己适应当前框架。这可能是个bug,如果去掉最后2行的代码,发现CFormView显示不正常。其中有一个控件是不能正常显示的。


也是运气的成分,我发现如果将这3行代码都注释掉的话,界面就ok了。任何情况下都显示正

搞定了。。。回去研究下原因。

#5


引用 4 楼 hongxiongmm 的回复:
vc2010中CFormView启动最大化窗口问题  2011-12-12 11:12:11|  分类: windows编程 |  标签: |举报 |字号大

小 订阅 
在2010中,窗口都有记录上次位置、大小的功能,但在使用CFormView中如果启动时最大化,他并不会最大化,而是先最大化,然后又变成我们画的CFormView一样大了。这倒无所谓,关键的毛病在于那个窗口样式不对了,窗口边缘没了。



解决方法如下:
其实这个CFormView中的OnInitUpdate函数问题,子类继承了这个函数,其中写了以下3句话:
 CFormView::OnInitialUpdate();
 GetParentFrame()->RecalcLayout();
 ResizeParentToFit();
这3句话目的在于使得自己适应当前框架。这可能是个bug,如果去掉最后2行的代码,发现CFormView显示不正常。其中有一个控件是不能正常显示的。


也是运气的成分,我发现如果将这3行代码都注释掉的话,界面就ok了。任何情况下都显示正

搞定了。。。回去研究下原因。


参照你的方法,我的最大化正常了,但是界面上的控件不正常了,必须拉一下才能完全显示。
请问您找出是什么原因吗?