CMenu::Detachで、メニューハンドルとCMenuオブジェクトの紐付けを解除する。
CFrameWnd_.cppで、
// ハンドラOnItem1_1() void CFrameWnd_::OnItem1_1(){ // メニュー項目Item1_1のコマンドハンドラ // メニュー項目の追加. CMenu cMenu; cMenu.Attach(m_hMenuDefault); cMenu.AppendMenu(MF_ENABLED | MF_STRING, 102, _T("Item2")); ::DrawMenuBar(m_hWnd); }
この場合、Detachが無いと、

1回追加した後で2回目の追加で、

こうなっちゃう。
1回目でm_hMenuDefaultがcMenuのデストラクタで破棄されちゃうからであり、
Detachがあれば、

押されても、

追加される。
Sample/mfc/CMenu/Detach/src/CMenu at master · bg1bgst333/Sample · GitHub