学习之旅

一起进步,一起成长。
Fullscreen Windows In Windows CE
The VariablesHWND hWnd;                     // The main window handleHWND hWndInputPanel = NULL;    // The SIPHWND hWndTaskBar    = NULL;    // The TaskBarHWND hWndSipButton  = NULL;    // The SIP ButtonBOOL mode = false;             // Our current window mode.                                 //  True = Fullscreen                               //  False - Windowed (Startup Default)
Finding the Window InformationThe 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 ModesToggling 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.
Collapse
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;    }}

posted on 2008-10-24 17:11  zuogang  阅读(573)  评论(0编辑  收藏  举报