如何使用 MFC 创建全屏窗口?

Posted

技术标签:

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

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

请帮帮我。

谢谢, 吉姆。

【问题讨论】:

【参考方案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() 中进行所有初始化。

以上是关于如何使用 MFC 创建全屏窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MFC 分别创建两个窗口?

MFC 中的全屏窗口

建立一个MFC对话框程序,运行时使对话框最大化显示(即全屏显示)该如何设置?

如何在 mfc 的 OnCreate 方法中停止创建窗口

要用MFC创建一个窗口,如何创建?

如何在 Win32 窗口中实现 MFC 资源?