2009-12-02 70 views
1

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

请帮帮我。

谢谢, 吉姆。

回答

1

你应该能够适应这里的示例代码做你想要什么:

MSDN: Initializing a dialog box

+0

这个例子肯定适合我。但为此我将不得不编写WndProc方法。我可以使用基于MFC对话框的应用程序的WndProc?怎么样? – Jim 2009-12-03 05:49:10

+0

好吧,我明白了。 WndPRoc包装在MFC框架中。 MFC应用程序在消息映射上工作。所以我会写代码到onInitDialog例程。我正确吗? – Jim 2009-12-03 06:35:28

+0

这是正确的。在'OnInitDialog()'中做所有的初始化。 – 2009-12-03 13:30:28

1

我想去除对话框资源边界,显示窗口最大化(ShowWindow(SW_SHOWMAXIMIZED))应该做的工作。

至于顶部使用系统模式风格的对话框资源。

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会将其显示在没有其他窗口的专用桌面上。

+1

完美。但是,如果我有两台显示器,但我只想为一台显示器设置全屏,请问该如何操作?在此先感谢 – user8264 2015-03-25 15:35:31

+0

@ user8264,您需要获取显示器的坐标并将其用于MoveWindow。 – 2015-03-27 03:07:54

+0

@ user8264:如果您想在主显示器上全屏显示: RECT rcDesktop; GetWindowRect(GetDesktopWindow(),&rcDesktop); MoveWindow(hWnd,rcDesktop.left,rcDesktop.top,rcDesktop.right,rcDesktop.bottom,FALSE); – andreaciri 2017-03-10 16:09:19