關於Mobile的全屏實現的一點心得

 http://www.devdiv.net/redirect.php?tid=10734&goto=lastpost

關於Mobile的全屏實現的一點心得

在做了幾個項目之後,終於找到了一個比較好的實現全屏的方法,之前做全屏的時候,在網上找了很多的實現方法,總結了下大致就2種(其他的大同小異):
1、         SetForegroundWindow();
        SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);
        SHFullScreen(m_hWnd, SHFS_HIDETASKBAR);
        SHFullScreen(m_hWnd, SHFS_HIDESTARTICON);

2、        CWnd* pWndSIP = FindWindow( _T("menu_worker"), 0 );
        if ( pWndSIP )
        {
                pWndSIP->SetWindowPos(&wndBottom , 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
                pWndSIP->ShowWindow(SW_HIDE);
        }
        pWndSIP = FindWindow( _T("MS_SIPBUTTON"), 0 );
        if ( pWndSIP )
        {
                pWndSIP->SetWindowPos(&wndBottom , 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
                pWndSIP->ShowWindow(SW_HIDE);
        }
        pWndSIP = FindWindow( _T("HHTaskBar"), 0 );
        if ( pWndSIP )
        {
                pWndSIP->SetWindowPos(&wndBottom , 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
                pWndSIP->ShowWindow(SW_HIDE);
        }

這2種方法其實都可以實現窗口的全屏,但是在某些時候或者某些機器上,並不能成功,或者是開始是成功的,但是在某種情況下就跑出來了,而且之後一直就因此不了了,具體的原因我跟了下,因爲Mobile自己帶了很多系統功能條,而且類名都是一樣的,所以當時隱藏的可能只是其中的一個,並沒有全部隱藏,當某些情況觸發的時候就會將另外一個系統條彈出來,而且很難隱藏。

我找到的方法是,在程序啓動的時候,或者是你需要隱藏的時候調用系統的EnumWindows函數去枚舉所有的系統窗口,然後用GetClassName(hwnd,szClassName,256);函數去根據窗口的名字去獲取這個窗口的類名,然後根據你需要隱藏的類名去隱藏窗口,例如:
        if (!wcscmp(szClassName,L"HHTaskBar"))
        {
                ShowWindow(hwnd, SW_HIDE);
                //return FALSE;
        }
        if (!wcscmp(szClassName,L"menu_worker"))
        {
                //EnableWindow(hwnd, FALSE);
                ShowWindow(hwnd, SW_HIDE);

                //return FALSE;
        }
        if (!wcscmp(szClassName,L"MS_SIPBUTTON"))
        {
                //EnableWindow(hwnd, FALSE);
                ShowWindow(hwnd, SW_HIDE);
                //return FALSE;
        }
這樣就可以保證所有的系統條都被隱藏了。

當然還有一點很重要,這樣的函數執行了以後,一定要在你退出你的程序的時候寫個逆隱藏函數,將之前隱藏的都顯示出來(只需要將ShowWindow(hwnd, SW_HIDE);改爲ShowWindow(hwnd, SW_SHOW);),否則,退出你的程序之後可是什麼都看不到了哦

MS_SIPBUTTON:下方中間的拼字那個窗口
menu_worker:下方的帶顏色的長條,不算中間的拼字
HHTaskBar:上方的任務條
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章