2011-12-22 72 views
3

對於許多用戶來說,這個問題可能被認爲是天真的,但我是MFC新手,需要指示。我想將一個特定的大小設置爲SDI窗口,但我無法做到這一點。我嘗試在CMainFrame類中的代碼:在MFC應用程序中設置窗口的大小

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 
{ 
if(!CFrameWndEx::PreCreateWindow(cs)) 
    return FALSE; 

cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER; 

cs.cy = 600; 
cs.cx = 600; 
cs.y = ((cs.cy * 3) - cs.cy)/2; 
cs.x = ((cs.cx * 3) - cs.cx)/2; 


return CFrameWnd::PreCreateWindow(cs); 
} 

窗口仍然保持其大小,但沒有任何更改。

就我而言,我可以重寫CWnd類中的相應函數以獲得相同的結果。鑑於我的程序中至今尚未使用CWnd類,我該怎麼做?

+1

[上漿一個MFC窗口(http://stackoverflow.com/questions/178326/sizing-an-mfc-window) – wallyk 2011-12-22 18:01:19

回答

0

移動的CFrameWndEx::PreCreateWindow

+0

當我刪除該行可能重複if(!CFrameWndEx :: PreCreateWindow(cs)) return FALSE ;.該程序崩潰。如果我把上面的附加代碼放在它上面,什麼都不會再改變。問題是這個函數在任何情況下都返回FALSE。我如何克服這一點? – arjacsoh 2011-12-22 18:43:41

+0

只需檢查:運行您的應用程序(使用上述更改),移動並調整主應用程序的窗口大小,然後關閉應用程序。然後再次啓動應用程序。應用程序的窗口是否在先前的位置? – qehgt 2011-12-22 19:26:08

0

呼叫是你的類真正從CFrameWndEx衍生上面的代碼?那是IMPLEMENT_DYNANIC/IMPLEMENT_DYNCREATE行中的類嗎?並在BEGIN_MESSSAGE_MAP行?

想想也對加入ON_WM_CREATE你的消息映射及其OnCreate方法允許其他可能性:

  • 做類似的事情,你在做什麼INT這種新方法。

  • 使用SetWindowPos這裏

相關問題