MFC單文件視窗最大化顯示
實現的方法主要有三種:
1.過載CMainFrame::ActivateFrame(int nCmdShow)
2.令nCmdShow=SW_SHOWMAXIMIZED
3.CXXApp::InitInstance()中的m_pMainWnd->ShowWindow(SW_SHOW);
實現方法的原理:
MFC單文件程式預設執行時視窗最大化,其實這是在修改MFC的視窗介面的外觀,修改MFC視窗的外觀或是風格 要用到類風格(CS_XXXX)和視窗風格(WS_XXXX),學過MFC的學者都知道在WinMain函式中,最開始都定義了WNDCLASS視窗類,該類可以改變視窗的圖示,背景,游標等;
若要改變視窗的大小,一般在CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中修改構造類cs的值,可以修改cs的cx,cy來改變大小;如果要最大化,就要修改cs.style|=WS_MAXIMIZE 使主框架類(CMainFrame)最大化,自然檢視類(CView)建立時也會跟隨主框架類(CMainFrame)而變化,但是此時顯示時,仍然是沒有變化,因為MFC主框架類(CMainFrame)的最後顯示要通過SW_XXXX引數來決定,一些朋友就建議在CXXApp::InitInstance()中的m_pMainWnd->ShowWindow(SW_SHOW);前加入m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);或直接改掉,其實最終效果可以實現,但執行開始時會出現先是正常的小視窗,然後馬上變成最大化,給人的視覺效果明顯不好!
之所以會產生這種效果,是因為在m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);呼叫之前會先呼叫 CMainFrame::ActivateFrame(int nCmdShow);此時便會根據nCmdShow(預設為SW_SHOWNORMAL)呼叫顯示視窗一次,SW_SHOWNORMAL會根據cs中的cx,cy,x,y來顯示視窗,當再次呼叫m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);會形成視覺暫留!
最終解決辦法如上所述!