VC實現顯示、自動隱藏任務欄(SHAppBarMessage)

VC實現顯示、自動隱藏任務欄(SHAppBarMessage)

一、顯示和隱藏任務欄

要想對任務欄進行操作,首先當然需要獲得任務欄的句柄,所以首先利用FindWindow獲取句柄,再操作
示例代碼:
1、隱藏任務欄
HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hWnd,SW_HIDE);
2、顯示任務欄
HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hWnd,SW_SHOW);

二、自動隱藏任務欄和取消自動隱藏任務欄(隱藏於自動隱藏不同)
需要利用一API函數:SHAppBarMessage
UINT_PTR SHAppBarMessage(     
    DWORD dwMessage,
    PAPPBARDATA pData
);

參數說明:
dwMessage   可以爲下列參數
ABM_ACTIVATE                           激活一個 appbar
ABM_GETAUTOHIDEBAR               檢索屏幕邊緣的 appbar
ABM_GETSTATE                           檢索最頂層的Microsoft Windows任務欄
ABM_GETTASKBARPOS                 檢索任務欄
ABM_NEW                                    註冊一個新的appbar,該系統併發送一消息給appbar
ABM_QUERYPOS                           appbar 大小和屏幕位置
ABM_REMOVE                               取消註冊一個 appbar,並從系統內部列表移出
ABM_SETAUTOHIDEBAR                在屏幕邊緣註冊或取消註冊appbar
ABM_SETPOS                               設置appbar 的大小和屏幕位置
ABM_SETSTATE                           設置appbar爲最頂層
ABM_WINDOWPOSCHANGED         當appbar得狀態發送改變時向系統發送消息

pData
一個APPBARDATA結構體

示例代碼:

void AutoHideTaskBar(BOOL bHide)
{
      //這三句視情況加於不加
      #ifndef   ABM_SETSTATE 
      #define   ABM_SETSTATE             0x0000000a 
      #endif

       LPARAM lParam;
       if(bHide == TRUE)
       {
              lParam = ABS_AUTOHIDE;//自動隱藏
       }
       else
       {
              lParam = ABS_ALWAYSONTOP;//取消自動隱藏
       }

       APPBARDATA  apBar; 
       memset(&apBar,0,sizeof(apBar)); 
       apBar.cbSize  =  sizeof(apBar); 
       apBar.hWnd  =  FindWindow("Shell_TrayWnd", NULL);
       if(apBar.hWnd  !=  NULL) 
       { 
              apBar.lParam   =   lParam; 
              SHAppBarMessage(ABM_SETSTATE,&apBar);  //設置任務欄自動隱藏
       }  
}

調用 AutoHideTaskBar(TRUE);//   自動隱藏
       AutoHideTaskBar(FALSE);//  取消自動隱藏

 

轉載:http://www.cnblogs.com/anhuizhxd/archive/2009/08/17/SHAppBarMessage.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章