Windows Mobile 窗口全屏

本文介绍如何在Windows应用程序中实现全屏显示,并提供两种模式的具体代码实现:Dialog模式和Frame/Document/View模式。同时,文章还介绍了如何通过回调函数隐藏系统菜单中的特定元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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/*action*/);
    //}
    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值