ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

CListViewにポップアップメニューを追加したけどON_UPDATE_COMMAND_UIが送られてこない件について

事象

CListViewにポップアップメニューを追加し、条件に応じてメニューのEnable/Disableを切り替えようとMFCの流儀に則りON_UPDATE_COMMAND_UIのハンドラを追加した。しかし、ポップアップメニュー表示時になぜかON_UPDATE_COMMAND_UIが来ない。

原因

CListViewは、ON_UPDATE_COMMAND_UIの送信に必要なOnInitMenuPopup()を実装していない。

対策

ここを参考に、OnInitMenuPopup()を実装する。

https://support.microsoft.com/sr-latn-me/help/242577/you-cannot-change-the-state-of-a-menu-item-from-its-command-user-inter