我有一个MFC应用程序,我已经工作了几个星期了,我想在加载时手动设置主框架的尺寸,有人可以给我一个这方面,特别是在哪里放代码也是?
谢谢!
答案 0 :(得分:8)
您还可以在SetWindowPos()
或CMainFrame::OnCreate()
派生类'CWinApp
中设置尺寸(InitInstance
})。查找显示pMainFrame->ShowWindow()
的行,并在该行前调用pMainFrame->SetWindowPos()
。这就是我经常这样做的地方。
答案 1 :(得分:3)
我认为您正在寻找PreCreateWindow并且您的应用不是基于对话的。
它是CWnd类的虚拟成员函数,它在创建窗口之前由框架调用。因此,这是进行更改的正确位置。
你应该写这样的东西:
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);
}
答案 2 :(得分: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_size
和main_y_size
的大小。
答案 3 :(得分:0)
您可以使用此:
CRect rect;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
left = -3, right = 3;
rect.top = 100;
rect.bottom = 500;
rect.left = 100;
rect.right = 800;
//or use
CRect cr;
cr.SetRect(POINT{ 100,100 }, POINT{ 500,800 });
MoveWindow(rect);