0

私が読んだのは、メニューには MenuInfo.dwStyle フラグを MNS_NOTIFYBYPOS に設定する必要があるということです。

MENUINFO MenuInfo;
memset(&MenuInfo,0, sizeof(MenuInfo));
MenuInfo.cbSize = sizeof(MenuInfo);
HMENU hPopupMenu = CreatePopupMenu();
GetMenuInfo(hPopupMenu, &MenuInfo);
MenuInfo.dwStyle |= MNS_NOTIFYBYPOS;
SetMenuInfo(hPopupMenu, &MenuInfo);

次に、アイテムの追加に進みます。

InsertMenu(hPopupMenu, pos, MF_BYPOSITION, id , "do command");

次の追跡:

TrackPopupMenu(hPopupMenu, TPM_CENTERALIGN | TPM_RETURNCMD, cursorPos.x, cursorPos.y, 0, hwnd, NULL);

しかし、それは効果がなく、エラーなしでコンパイルされますが、クリックイベントは次のように送信されるまでですWM_COMMAND

4

1 に答える 1

2

構造体の fMask メンバーを設定して、MENUINFO設定/取得するフィールドをシステムに伝える必要があります。

例えば

MenuInfo.fMask = MIM_STYLE;
GetMenuInfo(hPopupMenu, &MenuInfo);
MenuInfo.dwStyle |= MNS_NOTIFYBYPOS;
SetMenuInfo(hPopupMenu, &MenuInfo);

また、ドキュメントには次のように記載されていることに注意してください。

MNS_NOTIFYBYPOS はメニュー ヘッダー スタイルであり、個々のサブ メニューに適用しても効果がありません。

そのため、ポップアップ メニューを使用しても機能しない可能性があります。

于 2013-02-17T01:24:10.637 に答える