Windowsタスクバー(システムトレイ?)がドッキングされている場所を特定しようとしています。そのため、タスクバーの上/下/右にポップアップウィンドウを配置できます。Retrieve Taskbar Docking Position:result incorrect
私はこの情報を得るためにSHAppBarMessage(ABM_QUERYPOS, &barData)
を使用していますが、私のタスクバーがABE_TOP
のときは常にABE_LEFT
を返します。
どうなりますか?たぶん私はそれを決定するためにその機能を使用することはできません?たぶん私の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
いずれのAPI呼び出しの戻り値もチェックしていません。 'FindWindow'が有効なHWNDを返すか、' SHAppBarMessage'が成功するかどうかをどうやって知っていますか?あなたが投稿したコードは、ルーレットに相当します:*私はそこに投げ捨てるでしょうし、おそらくそれは動作しないかもしれません。*常に** APIコールの戻り値をチェックし、それらの戻り値が意味するものと、より多くの情報を見つける方法を見つけるためのドキュメント。 –
また、Win32 API呼び出しに渡す前に、memsetを使用して構造体をゼロにすることをお勧めします。しかし、私はそれがあなたの問題ではないと確信しています – kcraigie
ただ仕事場のためにモニターに尋ねるならば、 –