【问题标题】:How to create full screen window with MFC?如何使用 MFC 创建全屏窗口?
【发布时间】:2009-12-02 13:16:04
【问题描述】:

我想用 MFC 创建全屏最顶层(屏幕保护程序)窗口?如何在 MFC 中创建这样的全屏窗口?我尝试创建 win32 应用程序,我能够创建全屏最顶部窗口,但我想使用 MFC 创建,以便稍后我可以在该窗口上放置不同的 MFC 控件?

请帮帮我。

谢谢, 吉姆。

【问题讨论】:

    标签: visual-studio visual-studio-2008 mfc visual-c++


    【解决方案1】:

    我认为从对话框资源中删除边框并将窗口显示为最大化 (ShowWindow(SW_SHOWMAXIMIZED)) 应该可以完成这项工作。

    至于topmost,在对话框资源中使用System Modal样式。

    【讨论】:

      【解决方案2】:

      我使用对话框应用程序来完成。在对话框资源的资源编辑器属性中,设置 Border=None 和 Title Bar=False 以消除所有边框元素。在 OnInitDialog 中,使用以下命令将对话框调整为整个桌面:

      CRect rcDesktop;
      rcDesktop.left = GetSystemMetrics(SM_XVIRTUALSCREEN);
      rcDesktop.right = rcDesktop.left + GetSystemMetrics(SM_CXVIRTUALSCREEN);
      rcDesktop.top = GetSystemMetrics(SM_YVIRTUALSCREEN);
      rcDesktop.bottom = rcDesktop.top + GetSystemMetrics(SM_CYVIRTUALSCREEN);
      MoveWindow(rcDesktop, FALSE);
      

      此代码适用于多个显示器,与最大化窗口不同。

      无需担心将窗口置于最顶层,Windows 会将其显示在专用桌面上,而不会出现其他窗口。

      【讨论】:

      • 完美。但是,如果我有两台显示器,但我只想为一台显示器设置全屏,怎么办?提前致谢
      • @user8264 您需要获取显示器的坐标并将其用于 MoveWindow。
      • @user8264:如果你想在主显示器上全屏显示:RECT rcDesktop; GetWindowRect(GetDesktopWindow(), &rcDesktop); MoveWindow(hWnd, rcDesktop.left, rcDesktop.top, rcDesktop.right, rcDesktop.bottom, FALSE);
      【解决方案3】:

      您应该能够调整此处的示例代码来做您想做的事情:

      MSDN: Initializing a dialog box

      【讨论】:

      • 这个例子肯定对我有用。但为此我将不得不编写 WndProc 方法。我可以将 WndProc 与基于 MFC 对话框的应用程序一起使用吗?怎么样?
      • 好的,我明白了。 WndPROc 封装在 MFC 框架中。 MFC 应用程序适用于消息映射。所以我将在 onInitDialog 例程中编写代码。我正确吗?
      • 没错。在OnInitDialog() 中进行所有初始化。
      猜你喜欢
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多