vs2010 如何设置MFC程序窗口大小  

在vs2010中建立的MFC单文档程序,无论是在CMainFrame里的PreCreateWindow函数中对cs进行修改,还是使用SetWindowPos或MoveWindow函数,都无法实现对窗口的修改。 现在的状态是,如果给窗口加上可以调节大小这一style,那么窗口会自动保留上次更改后的大小,如果不加可调,那窗口就会按系统所固定的一个大小进行显示,根本无视我的所有设置,怎么办?

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWndEx::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.cx=500; // cs.cy=500; //这两行完全无视 cs.style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU ; return TRUE; } 尝试使用MoveWindow(50,50,500,500);与SetWindowPos(NULL, 0, 0, 500, 500, SWP_NOZORDER | SWP_NOMOVE); 却都没有任何效果。

    

程序在注册表里保留了FRAME上次的状态,包括大小位置以及各工具类窗口的布局等. 解决方法有二,其中第一个简单, 第二更稳妥: 1.)在InitInstance(..)调用CleanState(_T("WorkSpace")); 2.)让MainFrame按它的习惯布局完了再调整大小, 在此之前让MainFrame不显示.关键点: WM_CREATE, WM_WINDOWPOSCHANGING 你可能还会发现FRAME有时候会闪一下, 看着不舒服, 用第二个方法同样管用.