现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

窗口全屏时隐藏任务栏

2013-01-10 22:22 工业·编程 ⁄ 共 911字 ⁄ 字号 暂无评论

给人做个东西,有这个要求,先放上一些玩意的隐藏。

任务栏::ShowWindow(::FindWindow(_T("Shell_TrayWnd"), NULL), SW_HIDE);
开始菜单 ::ShowWindow(::GetDlgItem(::FindWindow(_T("Shell_TrayWnd"), NULL),0x130), SW_HIDE);//0x130 是开始按钮的ID
桌面 ::ShowWindow(::FindWindow(_T("ProgMan"), NULL), SW_HIDE);
禁用可以用EnableWindow()

    以为隐藏任务栏就完事,结果下面不给腾出位子来,任务栏原先的地方还是不会被覆盖。在任务栏上右键,属性,设置任务栏自动隐藏任务栏时发现窗口会占据那块位置,网上找到个设置自动隐藏的代码,结合隐藏任务栏,成功达到目的.

VOID HideTaskBar(BOOL bHide)
{
    int nCmdShow;
    HWND hWnd;
    LPARAM lParam;

    hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
    if(bHide == TRUE)
    {
        nCmdShow = SW_HIDE;
        lParam = ABS_AUTOHIDE | ABS_ALWAYSONTOP;
    }
    else
    {
        nCmdShow = SW_SHOW;
        lParam = ABS_ALWAYSONTOP;
    }

    ShowWindow(hWnd,nCmdShow);

    APPBARDATA apBar;
    memset(&apBar, 0, sizeof(apBar));
    apBar.cbSize = sizeof(apBar);
    apBar.hWnd = hWnd;
    if(apBar.hWnd != NULL)
    {
        apBar.lParam = lParam;
        SHAppBarMessage(ABM_SETSTATE, &apBar);
    }
}

用到shellapi需要包含头文件
vs08+xp测试通过

给我留言

留言无头像?