现在的状态是,如果给窗口加上可以调节大小这一style,那么窗口会自动保留上次更改后的大小,如果不加可调,那窗口就会按系统所固定的一个大小进行显示,根本无视我的所有设置,怎么办?问:BOOLCMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{

if(!CFrameWnd::PreCreateWindow(cs))
{
returnFALSE;
}
cs.style&= ~WS_OVERLAPPED
cs.cy =300;
cs.cx =100;
returnTRUE;
}
先上代码
在vs2010中,为什么运行时不会按要求改变窗口大小呢?而且运行的程序我手动拖窗口右下角改变大小后,再次启动时就是改变后的大小,为什么不是随机大小,或按我的CREATESTRUCT变量cs.cx,cs.cy改变大小呢?
解决方法:一.因为VS2010会将一些信息写入注册表,这个和之前VS2005,VS2008(SP1除外)不太一样,默认的SDI和MDI是带的BCG的一些东西。
你要修改窗口大小,可以直接在App类的InitInstance中ShowWindow();UpdateWindow()之前修改窗口大小,例如m_pMainWnd->MoveWindow(CRect(100, 100, 600, 400),FALSE);
————另外,m_pMainWnd->ShowWindow(SW_HIDE)可以控制窗口的显示与否。
二。MFC的应用程序向导在VC6.0中和VS2010中有很多区别。VS2010的中的MFC的应用程序向导增加了不少新的选项。默认情况下建立MFC应用程序,在VS2010中确实会出现楼主所说的现象。不过这个不和VC6.0的冲突,因为VS2010中的应用程序向导的默认选项和VC6.0的应用程序向导的默认选项不同,楼主调整选项为和VC6.0一样即可。在VS2010的MFC的应用程序向导的第二步选择MFC标准,第6步选择使用经典菜单。其效果即和VC6.0产生的效果一样。
程序在注册表里保留了FRAME上次的状态,包括大小位置以及各工具类窗口的布局等.
解决方法有二,其中第一个简单, 第二更稳妥:
1.)在InitInstance(..)调用CleanState(_T("WorkSpace"));
2.)让MainFrame按它的习惯布局完了再调整大小, 在此之前让MainFrame不显示.关键点: WM_CREATE,WM_WINDOWPOSCHANGING
你可能还会发现FRAME有时候会闪一下, 看着不舒服,用第二个方法同样管用.