2017-07-26 8 views
0

ショートカットメニューが表示されますが、私が何をしても、はメッセージを送信しません。Win32ショートカットメニューはどのような場合でもメッセージを送信しません

私はがWM_CONTEXTMENUウィンドウプロシージャメッセージにそれを試してみました、高レベルのマウスフックにそれを試してみました。 私が何をしても、返すものは決してメッセージを送信しません。

メニューはアプリケーションの起動時に作成され、アプリケーションが終了すると破棄されます。あなたが解決策は、私は私が持っているので、何をすべきかを教えて知っていれば

TrackPopupMenu(DoomRatGUI_SlavesListItemMenu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD | TPM_LEFTBUTTON | TPM_NOANIMATION, LOWORD(Arg_lParam), HIWORD(Arg_lParam), 0, DoomRatGUI_WindowHandle, NULL); 

DoomRatGUI_SlavesListItemMenu = CreatePopupMenu(); 
DoomRatGUI_SlavesListItemMenuInfo = calloc(1, sizeof(MENUINFO)); 
DoomRatGUI_SlavesListItemMenuInfo->fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS; 
DoomRatGUI_SlavesListItemMenuInfo->cbSize = sizeof(MENUINFO); 
DoomRatGUI_SlavesListItemMenuInfo->dwStyle = MNS_NOCHECK | MNS_NOTIFYBYPOS; 
//DoomRatGUI_SlavesListItemMenuInfo->hbrBack = ResourcesManager_GetDarkGreyBrush(); 
SetMenuInfo(DoomRatGUI_SlavesListItemMenu, DoomRatGUI_SlavesListItemMenuInfo); 
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1001, L"Actions"); 
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1002, L"Quick Info"); 
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1003, L"Quick Stop"); 
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1004, L"Quick Restart"); 

私はコードの行を使用してメニューを表示:ここで

は、メニューの作成コードでありますすべてのものを試しました。そのコードをどこに置くのか正確にありがとう。

PS:DoomRATは悪意のあるものではありません。その小さな2Dゲーム私は学習のために取り組んでいます。

+0

TrackPopupMenu()のMSDNドキュメントを参照したことがありますか?それは、このSOの質問を書いたほうが速くなっています。 – zett42

+0

これはモーダルです。内部的には独自のメッセージハンドラを持っています。 –

答えて

4

TPM_RETURNCMDフラグを設定すると、TrackPopupMenuは、WM_COMMANDメッセージを送信する代わりに、選択したメニューアイテムIDを関数の戻り値として返します。

また、MENUINFOのような割り当ては不要ですが、それは小さな構造体であり、スタックを使用するだけです。

+0

私はTMP_RETURNCMDを削除しようとしていましたが、以前は動作しませんでしたが、今はそうです!ありがとう! – CodeMaster12

関連する問題