如何使用 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 创建全屏窗口?的主要内容,如果未能解决你的问题,请参考以下文章