![]() |
Platforms, Frameworks & Libraries »
Mobile Development »
Dialogs and Windows
Intermediate
Fullscreen Windows In Windows CEBy Barney L. ParkerFullscreen Windows in Windows CE Without using SHFullScreen |
C++, Windows, WinMobile, Mobile, Visual-Studio, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
The usual method of creating a full screen window in Windows CE involves using the function SHFullScreen. This article describes a method of creating full screen windows with standard window management calls.
HWND hWnd; // The main window handle
HWND hWndInputPanel = NULL; // The SIP
HWND hWndTaskBar = NULL; // The TaskBar
HWND hWndSipButton = NULL; // The SIP Button
BOOL mode = false; // Our current window mode.
// True = Fullscreen
// False - Windowed (Startup Default)
The first step is to find the handles of the three main windows that handle the TaskBar, Standard Input Panel (SIP) and SIP Button Bar. This should be done early on in the application during initialization.
void InitFullScreen (void)
{
hWndInputPanel = FindWindow(TEXT("SipWndClass"), NULL);
hWndSipButton = FindWindow(TEXT("MS_SIPBUTTON"), NULL);
hWndTaskBar = FindWindow(TEXT("HHTaskBar"), NULL);
}
Toggling between the two modes is a simple matter of setting the windows states, and sizing our window appropriately.
To Enter Fullscreen mode we use ShowWindow(HWND,SW_HIDE) on each of the system windows.
To Exit Fullscreen mode we use ShowWindow(HWND,SW_SHOW) on each of the system windows. This will however also show the input panel, which is not desirable, so hWndInputPanel should be ignored.
Sizing the window to the correct size involves a different system call depending on whether you are entering or exiting Fullscreen Mode.
Entering Fullscreen mode we call SetWindowPos(hWnd... using the results from a GetSystemMetrics call.
Exiting Fullscreen mode we call SetWindowPos(hWnd... using the results from a SystemParametersInfo(... call.
void ToggleFullScreen()
{
RECT rtDesktop;
if (mode)
{
if(hWndTaskBar != NULL)
ShowWindow(hWndTaskBar, SW_SHOW);
//if(hWndInputPanel != NULL)
ShowWindow(hWndInputPanel, SW_SHOW);
//Never forcibly show the input panel
if(hWndSipButton != NULL)
ShowWindow(hWndSipButton, SW_SHOW);
if(SystemParametersInfo(SPI_GETWORKAREA, 0, &rtDesktop, NULL) == 1)
SetWindowPos(hWnd,HWND_TOPMOST,0,0,rtDesktop.right -
rtDesktop.left,rtDesktop.bottom - rtDesktop.top, SWP_SHOWWINDOW);
mode = false;
}
else
{
if (hWndTaskBar != NULL) ShowWindow(hWndTaskBar, SW_HIDE);
if (hWndInputPanel != NULL) ShowWindow(hWndInputPanel, SW_HIDE);
if (hWndSipButton != NULL) ShowWindow(hWndSipButton, SW_HIDE);
SetWindowPos(hWnd,HWND_TOPMOST,0,0,GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
mode = true;
}
}
Changing to a fullscreen window is surprisingly simple. There are functions in .NET and MFC which do the same thing, however for extra performance, nothing beats standard Win32 functions!
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 2 Sep 2006 Editor: Deeksha Shenoy |
Copyright 2006 by Barney L. Parker Everything else Copyright © CodeProject, 1999-2010 Web10 | Advertise on the Code Project |