ポップアップメニューを実装するには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 でハンドルする


VC覚書きページ...