https://blog.csdn.net/weixin_30840253/article/details/94993669
网友给出了一下的原因和解决方案:
因为VS2010会将一些信息写入注册表,这个和之前VS2005,VS2008(SP1除外)不太一样,默认的SDI和MDI是带的BCG的一些东西。 你要修改窗口大小,可以直接在App类的InitInstance中ShowWindow();UpdateWindow()之前修改窗口大小,例如 m_pMainWnd->MoveWindow(CRect(100, 100, 600, 400), FALSE);
我采用的方法是先在App类的初始化实例时调用CleanState(),清除注册表的状态信息,然后在框架类中设置窗口大小和样式,具体代码如下:
1 int CImageQuality02App::ExitInstance() 2 { 3 // TODO: 在此添加专用代码和/或调用基类 4 AfxOleTerm(FALSE); 5 CleanState();//清除程序在注册表写入的状态信息 6 7 return CWinAppEx::ExitInstance(); 8 } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWndEx::PreCreateWindow(cs) ) return FALSE; // TODO: 在此处通过修改 // CREATESTRUCT cs 来修改窗口类或样式 cs.cx = 400; cs.cy = 800; cs.lpszName = _T("VC"); //cs.style &= FWS_ADDTOTITLE; cs.style = WS_OVERLAPPEDWINDOW; // return TRUE; } int CStyclesunxin3App::ExitInstance() { //TODO: 处理可能已添加的附加资源 AfxOleTerm(FALSE); CleanState(); return CWinAppEx::ExitInstance(); }
