VC實現(xiàn)顯示、自動隱藏任務(wù)欄(SHAppBarMessage)
一、顯示和隱藏任務(wù)欄
要想對任務(wù)欄進行操作,首先當(dāng)然需要獲得任務(wù)欄的句柄,所以首先利用FindWindow獲取句柄,再操作
示例代碼:
1、隱藏任務(wù)欄
HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hWnd,SW_HIDE);
2、顯示任務(wù)欄
HWND hWnd = FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hWnd,SW_SHOW);
二、自動隱藏任務(wù)欄和取消自動隱藏任務(wù)欄(隱藏于自動隱藏不同)
需要利用一API函數(shù):SHAppBarMessage
UINT_PTR SHAppBarMessage(
DWORD dwMessage,
PAPPBARDATA pData
);
參數(shù)說明:
dwMessage 可以為下列參數(shù)
ABM_ACTIVATE 激活一個 appbar
ABM_GETAUTOHIDEBAR 檢索屏幕邊緣的 appbar
ABM_GETSTATE 檢索最頂層的Microsoft Windows任務(wù)欄
ABM_GETTASKBARPOS 檢索任務(wù)欄
ABM_NEW 注冊一個新的appbar,該系統(tǒng)并發(fā)送一消息給appbar
ABM_QUERYPOS appbar 大小和屏幕位置
ABM_REMOVE 取消注冊一個 appbar,并從系統(tǒng)內(nèi)部列表移出
ABM_SETAUTOHIDEBAR 在屏幕邊緣注冊或取消注冊appbar
ABM_SETPOS 設(shè)置appbar 的大小和屏幕位置
ABM_SETSTATE 設(shè)置appbar為最頂層
ABM_WINDOWPOSCHANGED 當(dāng)appbar得狀態(tài)發(fā)送改變時向系統(tǒng)發(fā)送消息
pData
一個APPBARDATA結(jié)構(gòu)體
示例代碼:
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); //設(shè)置任務(wù)欄自動隱藏
}
}
調(diào)用 AutoHideTaskBar(TRUE);//or
AutoHideTaskBar(FALSE);//
|