使用SHAppBarMessage这个消息函数,可以取得任务栏在屏幕上位置与大小。
UINT_PTR SHAppBarMessage(
DWORD dwMessage,
PAPPBARDATA pData
);
调用指定参数dwMessage为ABM_GETTASKBARPOS,参数pData是一个APPBARDATA结构:
typedef struct _AppBarData {
DWORD cbSize;
HWND hWnd;
UINT uCallbackMessage;
UINT uEdge;
RECT rc;
LPARAM lParam;
} APPBARDATA, *PAPPBARDATA;
结构的uEdge成员表示位务栏在屏幕上的位置:0左,1上,2右,3下,
rc成员表示任务栏所占屏幕的区域。
void CDialog::OnOK()
{
APPBARDATA ad;
ZeroMemory(&ad,sizeof APPBARDATA);
ad.cbSize=sizeof APPBARDATA;
SHAppBarMessage(ABM_GETTASKBARPOS, &ad);
TRACE("%d,%d,%d,%d,%d\n", ad.uEdge, ad.rc.left, ad.rc.right, ad.rc.top, ad.rc.bottom);
}