Click here to Skip to main content
13,052,351 members (56,538 online)
Click here to Skip to main content
Add your own
alternative version


37 bookmarked
Posted 2 Sep 2006

Fullscreen Windows in Windows CE

, 2 Sep 2006
Rate this:
Please Sign up or sign in to vote.
Fullscreen Windows in Windows CE without using SHFullScreen.


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.

The Variables

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)

Finding the Window Information

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

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 -, SWP_SHOWWINDOW);

        mode = false;
        if (hWndTaskBar != NULL)    ShowWindow(hWndTaskBar, SW_HIDE);
        if (hWndInputPanel != NULL)    ShowWindow(hWndInputPanel, SW_HIDE);
        if (hWndSipButton != NULL)    ShowWindow(hWndSipButton, SW_HIDE);

                GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);

        mode = true;

Points of Interest

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!


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Barney L. Parker
United Kingdom United Kingdom
No Biography provided

You may also be interested in...

Comments and Discussions

GeneralNice, a suggestion for WM5 Pin
trevor.hart5-Sep-06 14:54
membertrevor.hart5-Sep-06 14:54 
GeneralRe: Nice, a suggestion for WM5 Pin
Barney L. Parker6-Sep-06 12:13
memberBarney L. Parker6-Sep-06 12:13 
QuestionWhy ? Pin
Alain Rist3-Sep-06 22:34
memberAlain Rist3-Sep-06 22:34 
AnswerRe: Why ? Pin
Barney L. Parker4-Sep-06 22:40
memberBarney L. Parker4-Sep-06 22:40 
GeneralRe: Why ? Pin
Alain Rist5-Sep-06 3:39
memberAlain Rist5-Sep-06 3:39 
AnswerRe: Why ? Pin
dimi5-Sep-06 20:02
memberdimi5-Sep-06 20:02 
GeneralRe: Why ? Pin
Alain Rist5-Sep-06 20:47
memberAlain Rist5-Sep-06 20:47 
GeneralWinCE 4.2 Pin
alpor21-Nov-08 23:18
memberalpor21-Nov-08 23:18 
GeneralRe: WinCE 4.2 Pin
zhangjingfei18-Jan-10 1:12
memberzhangjingfei18-Jan-10 1:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170713.1 | Last Updated 2 Sep 2006
Article Copyright 2006 by Barney L. Parker
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid