我正在尝试确定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
答案 0 :(得分:0)
看起来我使用的是错误的标志。以下作品:
APPBARDATA barData {0};
barData.cbSize = sizeof(APPBARDATA);
UINT_PTR res = SHAppBarMessage(ABM_GETTASKBARPOS, &barData);