How to create full screen window with MFC?
Solution 1
You should be able to adapt the example code here to do what you want:
MSDN: Initializing a dialog box
Solution 2
I think removing the border from the dialog resource and showing the window as maximized (ShowWindow(SW_SHOWMAXIMIZED)
) should do the job.
As for topmost use the System Modal style in the dialog resource.
Solution 3
I do it with a Dialog Box app. In the resource editor properties for the dialog resource, set Border=None and Title Bar=False to eliminate all border elements. In OnInitDialog, use the following to resize the dialog to the entire desktop:
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);
This code works on multiple monitors, unlike maximizing the window.
No need to worry about making the window topmost, Windows will display it on a dedicated desktop with no other windows present.
Comments
-
Jim almost 2 years
I want to create full screen topmost (screen saver) window with MFC? How to create such full screen window in MFC? I tried to create win32 application and i am able to create fullscreen top most window but i want to create using MFC so later i can put different MFC controls on that window?
Please help me.
Thanks, Jim.
-
Jim over 14 yearsThis example will definitely work for me. but for that i will have to write WndProc method. can i use WndProc with MFC dialog based application? How?
-
Jim over 14 yearsok i got it. WndPRoc is wrapped up in MFC framework. MFC application works on Message Mapping. so i will have write code into onInitDialog routine.Am i correct?
-
Jon Seigel over 14 yearsThat's correct. Do all your initialization in
OnInitDialog()
. -
John about 9 yearsPerfect. However,If I have two monitors, but I want to set full screen for only one monitor, how to do it? Thank in advance
-
Mark Ransom about 9 years@user8264 you need to get the coordinates of the monitor and use that for the MoveWindow.
-
andreaciri about 7 years@user8264: if you want to full screen on the main monitor: RECT rcDesktop; GetWindowRect(GetDesktopWindow(), &rcDesktop); MoveWindow(hWnd, rcDesktop.left, rcDesktop.top, rcDesktop.right, rcDesktop.bottom, FALSE);