ポップアップメニューを実装するにはWM_CONTEXTMENU をハンドルするのが一般的
CMenu menu;
VERIFY(menu.LoadMenu(IDR_POPUPMENU));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, x, y, this);
PostMessage(WM_NULL, 0L, 0L); //おまじないらしい
注意点として TrackPopupMenu()の第1引数は TPM_RIGHTBUTTON を使う。
TPM_LEFTBUTTON ではメニュー外を右クリックしたときポップアップメニュー
が消えない。(ヘルプの書いてあることと違うけど)
また、CTreeView(TreeCtrl)などは WM_CONTEXTMENUがこないのでNM_RCLICK でハンドルする