检索任务栏停靠位置:结果不正确

时间:2016-05-14 04:30:17

标签: c winapi

我正在尝试确定Windows任务栏(系统托盘?)的哪一侧停靠 - 这样我就可以将弹出窗口放在任务栏的上方/下方/左侧/右侧。

我正在使用SHAppBarMessage(ABM_QUERYPOS, &barData)获取此信息,但当我的任务栏为ABE_LEFT时,它始终会返回ABE_TOP

出了什么问题?也许我不能使用该功能来确定它?也许我的APPBARDATA参数错了?

APPBARDATA barData;
barData.cbSize = sizeof(APPBARDATA);
barData.hWnd = FindWindow("Shell_TrayWnd", NULL);
barData.uCallbackMessage = 0;
//barData.uEdge = ABE_LEFT; 
//barData.rc = RECT{0,0300,300};
barData.lParam = (LPARAM)FALSE; 

SHAppBarMessage(ABM_QUERYPOS, &barData);

// barData.uEdge always equals ABE_LEFT

1 个答案:

答案 0 :(得分:0)

看起来我使用的是错误的标志。以下作品:

APPBARDATA barData {0};
barData.cbSize = sizeof(APPBARDATA);
UINT_PTR res = SHAppBarMessage(ABM_GETTASKBARPOS, &barData);