【问题标题】:Sizing an MFC Window调整 MFC 窗口的大小
【发布时间】:2010-09-15 18:04:30
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    您还可以从CMainFrame::OnCreate()CWinApp 派生类'InitInstance 中设置大小(使用SetWindowPos())。查找显示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 是您的尺寸。

      【讨论】:

      • SPI_GETWORKAREA 仅获取主 mnonitor 的大小。对于整个虚拟桌面,使用这个: int desktopW = GetSystemMetrics(SM_CXVIRTUALSCREEN); int desktopH = GetSystemMetrics(SM_CYVIRTUALSCREEN);
      【解决方案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);
      }

      【讨论】:

      • 它可以工作,但你必须在 MainFrm.cpp 中编辑 PreCreateWindow,而不是你的 View 类。
      【解决方案4】:

      你可以用这个:

      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);
      

      【讨论】:

      • 你没有回答完整的问题,也没有解释你的代码是如何工作的。请围绕您的答案提供一些背景信息来帮助提问者。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 2012-04-07
      • 2017-01-20
      相关资源
      最近更新 更多