Maximized MFC window has dead region at the top
Posted
by John Calsbeek
on Stack Overflow
See other posts from Stack Overflow
or by John Calsbeek
Published on 2010-04-15T23:26:04Z
Indexed on
2010/04/15
23:33 UTC
Read the original article
Hit count: 167
I'm trying to make a MFC window fullscreen whenever it is maximized. This window is being used to draw OpenGL content. So far it works fine—it fills the entire screen with the exception of the taskbar—but there's a dead black region at the top of the screen, 62 pixels in height. It's pretty darn close to the height of the Windows 7 taskbar, but it pretty much stays the same regardless of if the taskbar is on autohide or on a different side of the screen. When I get a CWind::OnSize
callback, the height that is given is 988, which is 62 pixels short of the actual screen height (1050). I've tried to manually set the window height to 1050 with SetWindowPos
, I've tried to give Windows the screen dimensions in CWnd::OnGetMinMaxInfo
, and I've tried to give the screen dimensions to glViewport
instead of the 988 pixels that I'm being given. None of these seem to work.
I'm accomplishing the fullscreening with a call to…
ModifyStyle(0, WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU | WS_CAPTION | WS_POPUP, 0);
…in the SIZE_MAXIMIZED
CWnd::OnSize
callback, which works fine, except for this dead region. I don't know if it's an OpenGL thing or a Win32 thing or a MFC thing. The GetClientRect
function for my window reports the false 988 height. The same OpenGL rendering code works fine in my Mac OS X build.
Curiously enough, I have gotten the dead region to move around a bit when I play with the taskbar (autohiding it, moving it around the screen, etc.). I've gotten the dead area to shrink to about half—not sure if the other half went to the bottom of the window or not.
© Stack Overflow or respective owner