天天看點

Windows Mobile 視窗全屏

Dialog 模式:

在OnInitDialog()内:

BOOL CUbiMessageDialog::OnInitDialog()

{

    m_bFullScreen = FALSE; //

    CDialog::OnInitDialog();

    SHINITDLGINFO shidi;

    memset(&shidi, 0, sizeof(SHINITDLGINFO));

    shidi.dwMask = SHIDIM_FLAGS;

    shidi.dwFlags = SHIDIF_FULLSCREENNOMENUBAR|SHIDIF_DONEBUTTON;

    shidi.hDlg = m_hWnd;

    ::SHInitDialog(&shidi);

    SetForegroundWindow();

    SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);

}

Frame/Document/View 模式:

void SetFullScreen(HWND hWnd)

{

    RECT rc;

    ::GetWindowRect(hWnd,&rc);

    SetRect(&rc,rc.left,rc.top,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));

    // 用來隐藏菜單欄的

    //HWND hCommandBarWnd = ::FindWindowW( _T("menu_worker"), NULL );

    //::CommandBar_Show(hCommandBarWnd, FALSE);

    //VERIFY(SHFullScreen(m_hWnd, SHFS_HIDETASKBAR));

    //VERIFY(SHFullScreen(m_hWnd, SHFS_HIDESTARTICON));

    ::SetForegroundWindow(hWnd);

    VERIFY(SHFullScreen(hWnd, SHFS_HIDESIPBUTTON));

    ::MoveWindow(hWnd,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,TRUE); //視窗最大化

}

隐藏系統菜單:

static BOOL CALLBACK MyEnumProc(HWND hwnd,LPARAM lParam)  

{

    int action = (int)lParam;

    wchar_t szClassName[256];

    GetClassName(hwnd,szClassName,256);

    if(!wcscmp(szClassName,L"menu_worker")){

        ShowWindow(hwnd, action);

    }

    else if(!wcscmp(szClassName,L"MS_SIPBUTTON")){

        ShowWindow(hwnd, action);

    }

    //else if(!wcscmp(szClassName,L"HHTaskBar")){

    //    ShowWindow(hwnd, SW_SHOW);

    //}

    return TRUE;

}

void ShowSystemMenu(BOOL bShow)

{

    int action = bShow?SW_SHOW:SW_HIDE;

    EnumWindows(MyEnumProc,(LPARAM)action);  

}

MS_SIPBUTTON:下方中間的拼字那個視窗

menu_worker:下方的帶顔色的長條,不算中間的拼字

HHTaskBar:上方的任務條

參考資料:

http://www.devdiv.net/viewthread.php?tid=10734

繼續閱讀