• ベストアンサー

ポップアップメニューにチェックを付けるには?

<環境> WIN98 VC++6.0 MFC  以下でメニューにチェックをつけることが出来たのですが、右クリックして出したポップアップメニューの場合はチェックが付きません。 どうすれば付くようになりますか? お願いいたします。 void CMainFrame::OnUpdateMenuitem32771(CCmdUI* pCmdUI) { pCmdUI->SetCheck(TRUE); }

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>このように更に一つ下のポップアップメニューにチェックをつけたいのですが、 そのまま文章で書いているとおりのことをすればいいだけでは? 1.さらに一つ下のポップアップメニューのCMenu*を取得する 2.チェックをつける これだけの気がしますけど。

mk1234
質問者

お礼

これでうまくいきましたが、何かおかしなところはないでしょうか? SetForegroundWindow(); // この処理を忘れずに! CMenu menu; CMenu menu1; CMenu* pPopup; CMenu* pPopup1; VERIFY(menu.LoadMenu(IDR_MENU1)); //サブメニュー用 pPopup = menu.GetSubMenu(0); pPopup1=pPopup->GetSubMenu(1);//サブメニュー用 ASSERT(pPopup != NULL); pPopup1->CheckMenuItem(1,((m_bFoo?MF_CHECKED:MF_UNCHECKED) | MF_BYPOSITION));////サブメニューにチェックを付ける pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); PostMessage(WM_NULL); // この処理も忘れずに!

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

右クリックメニューを表示しようとしたときに、そのイベントハンドラが呼ばれているか確認しましたか? http://www.interq.or.jp/jazz/iijima/mfc/iijima/15popupmenu.html

参考URL:
http://www.interq.or.jp/jazz/iijima/mfc/iijima/15popupmenu.html
mk1234
質問者

お礼

回答ありがとうございます。 以下で何とかチェックを付けることは出来ましたが実際にやりたいことは、このように更に一つ下のポップアップメニューにチェックをつけたいのですが、よろしくお願いします。 あああ  いいい ▲  レ おおお ううう えええ case WM_RBUTTONDOWN:{ SetForegroundWindow(); // この処理を忘れずに! CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); pPopup->CheckMenuItem(8,(MF_CHECKED | MF_BYPOSITION));//チェックを付ける pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); PostMessage(WM_NULL); // この処理も忘れずに! break;

関連するQ&A

専門家に質問してみよう