我正在尝试确定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

最佳答案

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

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

关于c - 检索任务栏对接位置:结果不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37222540/

10-11 00:49