- ベストアンサー
ポップアップメニューにチェックを付けるには?
<環境> WIN98 VC++6.0 MFC 以下でメニューにチェックをつけることが出来たのですが、右クリックして出したポップアップメニューの場合はチェックが付きません。 どうすれば付くようになりますか? お願いいたします。 void CMainFrame::OnUpdateMenuitem32771(CCmdUI* pCmdUI) { pCmdUI->SetCheck(TRUE); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>このように更に一つ下のポップアップメニューにチェックをつけたいのですが、 そのまま文章で書いているとおりのことをすればいいだけでは? 1.さらに一つ下のポップアップメニューのCMenu*を取得する 2.チェックをつける これだけの気がしますけど。
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
右クリックメニューを表示しようとしたときに、そのイベントハンドラが呼ばれているか確認しましたか? http://www.interq.or.jp/jazz/iijima/mfc/iijima/15popupmenu.html
お礼
回答ありがとうございます。 以下で何とかチェックを付けることは出来ましたが実際にやりたいことは、このように更に一つ下のポップアップメニューにチェックをつけたいのですが、よろしくお願いします。 あああ いいい ▲ レ おおお ううう えええ 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;
お礼
これでうまくいきましたが、何かおかしなところはないでしょうか? 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); // この処理も忘れずに!