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