9

我有一个 MFC 应用程序,我已经工作了几个星期了,我想在加载时手动设置主框架的尺寸,有人可以帮我解决这个问题,特别是在哪里放置代码?

谢谢!

4

4 回答 4

11

您还可以SetWindowPos()从内部CMainFrame::OnCreate()CWinApp派生类'中设置大小(使用 ) InitInstance。查找显示 的行pMainFrame->ShowWindow(),并在该行之前调用pMainFrame->SetWindowPos()。这就是我总是这样做的地方。

于 2008-10-07T13:28:44.747 回答
3

使用 .. 查找您的屏幕尺寸

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尺码在哪里?

于 2008-10-07T13:09:56.250 回答
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);
}
于 2008-10-07T13:16:44.817 回答
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);
于 2020-06-21T17:54:25.917 回答