2008-10-07 90 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