0

ユーザーがTrackPopupMenuを使用してタスクバー アイコンをクリックしたときに表示されるポップアップ メニューを作成しました。メニューの外側をクリックして選択項目をキャンセルするまで、コードは正常に機能します。次に、アイコンを左/右クリックするたびに、メニューがポップアップし、表示される前にすぐに消えます (TrackPopupMenu がすぐに 0 を返すように見えます)。MDSN は TrackPopupMenu の後に追加することで修正する方法を教えてくれましたが、PostMessage(hDlg, WM_NULL, 0, 0);うまくいきません。

これが私のコードです:

case WM_LBUTTONUP :
case WM_RBUTTONUP :
            POINT p;
            GetCursorPos(&p);
            HMENU hPopupMenu = CreatePopupMenu();
            AppendMenu(hPopupMenu, MF_ENABLED, ID_ADDMUSIC,    L"Add music"   );
            AppendMenu(hPopupMenu, MF_ENABLED, ID_REMOVEMUSIC, L"Remove music");
            SetForegroundWindow(msgInfo->hwnd);
            result = TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_RIGHTALIGN | TPM_NONOTIFY |
                                                TPM_RETURNCMD | TPM_RIGHTBUTTON | TPM_VERNEGANIMATION,
                                                p.x, p.y, 0, msgInfo->hwnd, NULL);
            PostMessageW(msgInfo->hwnd, WM_NULL, 0, 0);
            DestroyMenu(hPopupMenu);
4

2 に答える 2

0

これはトレイにあるアプリのアイコンですか?

トレイ アイコンは、さまざまなことに対して WM_SHELLNOTIFY メッセージを送信します。wParm は 0 で、WM_RBUTTONDOWN をテストできます。lParam の WM_RBUTTONUP。

起動時に一度メニューを作成し、トレイアプリを閉じると削除します。

于 2012-07-08T03:35:32.833 に答える
0

あなたのチェックはこれを行う正しい方法WM_LBUTTONUPWM_LBUTTONDOWNはないと思います。タスクバー アイコンを作成する際に、コールバック メッセージを指定します。確認する必要があるのはこのメッセージであり、そのメッセージで と を確認しLPARAMWM_LBUTTONUPくださいWM_LBUTTONDOWN

于 2012-07-08T03:22:48.923 に答える