通过设置属性可以使得任务栏自动隐藏或者不隐藏,现在的问题是如何在代码中判断这两种情况
CWnd* pWnd=CWnd::FindWindow("Shell_TrayWnd", 0);
if(NULL != pWnd)
 if(pWnd->IsWindowVisible())
  MessageBox("Is Show");
 else
  MessageBox("Is Hide");
这种方法不行,明明是隐藏了任务栏但是还是执行  MessageBox("Is Show");如何处理,谢谢

解决方案 »

  1.   

    //隐藏任务栏
    HWND hwndTaskBar = ::FindWindow("Shell_TrayWnd", NULL);
    ::ShowWindow(hwndTaskBar, SW_HIDE);
    //屏蔽快捷键
    SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, NULL, NULL);//还原
    HWND hwndTaskBar = ::FindWindow("Shell_TrayWnd", NULL);
    ::ShowWindow(hwndTaskBar, SW_SHOW);
    SystemParametersInfo(SPI_SCREENSAVERRUNNING, FALSE, NULL, NULL);你的任务栏可能被设为自动隐藏.
    如果设为总在最前而没有自动隐藏的话可以用你的方法实现隐藏.
    如果设为自动隐藏,则因为操作系统还会根据鼠标事件来隐藏或者显示,
    这种情况下可以用:
    if(!bStatusBarHide)
    {
    ::ShowWindow(::FindWindow("Shell_TrayWnd",NULL),SW_HIDE);
    ::EnableWindow(::FindWindow("Shell_TrayWnd",NULL),FALSE);
    bStatusBarHide = TRUE;
    }
    else
    {
    ::ShowWindow(::FindWindow("Shell_TrayWnd",NULL),SW_SHOW);
    //SW_SHOWNOACTIVATE可用但不激活
    ::EnableWindow(::FindWindow("Shell_TrayWnd",NULL),TRUE);
    bStatusBarHide = FALSE;
    }
      

  2.   

    系统的自动隐藏并不是设置的window的visible属性,而是设置的position,在1024*768的时候,显示任务栏的时候任务栏的positiony是756-770,隐藏的时候是766-780,所以要这样判断