2008-10-07 92 views
7

我有一個MFC應用程序,我一直在努力了幾個星期,我想手動設置主框架的尺寸,當它加載時,有人可以給我一個這個手,特別何處放置代碼?調整一個MFC窗口大小

謝謝!

回答

8

您還可以設置大小(與SetWindowPos()),或在CWinApp派生類InitInstance。找到表示pMainFrame->ShowWindow()的行,並在該行之前調用pMainFrame->SetWindowPos()。這就是我一直這樣做的地方。

2

與..

CRect rect; 
SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0); 
screen_x_size=rect.Width(); 
screen_y_size=rect.Height(); 

使用這些值來計算X,您的窗口,然後Y的大小找到你的屏幕尺寸..

::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,main_x_size,main_y_size,SWP_NOZORDER); 

main_x_sizemain_y_size是你的尺寸。

+1

SPI_GETWORKAREA只獲取主監理器的大小。對於整個虛擬桌面,請使用: int desktopW = GetSystemMetrics(SM_CXVIRTUALSCREEN); int desktopH = GetSystemMetrics(SM_CYVIRTUALSCREEN); – 2008-10-07 13:23:04

2

我認爲你在尋找PreCreateWindow,並且你的應用不是基於對話框的。

它是一個CWnd類的虛擬成員函數,它在創建窗口之前被框架調用。所以這是放置您的更改的正確位置。

你應該寫這樣的事:從CMainFrame::OnCreate()

BOOL CMyWindow::PreCreateWindow(CREATESTRUCT& cs) 
{ 
    cs.cy = 640; // width 
    cs.cx = 480; // height 
    cs.y = 0; // top position 
    cs.x = 0; // left position 
    // don't forget to call base class version, suppose you derived you window from CWnd 
    return CWnd::PreCreateWindow(cs); 
}
+0

我試過了,沒有任何可見的效果 – masche 2013-05-29 07:40:35