今VC++6、Windows2000でSDIのアプリを作成しています。
デフォルトで作成されるメニューに新しいメニューを作成したのですが
メニューアイテムのID作成しないもの(ポップアップメニューにしたため)
にチェックをいれることができないのですが、何か方法はないでしょうか?
よろしくおねがいします。
>> ポップアップメニューにしたため
サブメニューのことですか?
ならば、一つ上、あるいは一つ下の
項目から、該当項目を指定して変更してやればよいのでは。
下の例では3番目の項目から2番目の項目を変更しています。
たとえば次のようにメニューが表示されていて、
----------
[TEST000 ]
[TEST001>]
[TEST002 ]
TEST001 にチェックをつけたいとき、
TEST002 の ON_UPDATE_COMMAND_UI ハンドラを追加。
pMenu が NULL のこともあるので注意。
void CMainFrame::OnUpdateTest002(CCmdUI* pCmdUI)
{
// ON_UPDATE_COMMAND_UI
CMenu * pMenu = pCmdUI->m_pMenu;
if( pMenu )
{
pMenu->CheckMenuItem( 1, MF_BYPOSITION | MF_CHECKED );
}
}
でも、全てポップアップだけのときはどうするんだろう。
ダミーでポップアップでない項目を入れておき、
その項目のON_UPDATE_COMMAND_UIでほかの項目に
チェックをつけ、その項目自身は削除するのかな。
やってみよう。
void CMainFrame::OnUpdateTest002(CCmdUI* pCmdUI)
{
// ON_UPDATE_COMMAND_UI
CMenu * pMenu = pCmdUI->m_pMenu;
if( pMenu )
{
pMenu->CheckMenuItem( 1, MF_BYPOSITION | MF_CHECKED );
pMenu->DeleteMenu( 2, MF_BYPOSITION );
}
}
テストはうまくいきました。
これで、全てサブメニューでもチェックの操作ができます。
詳細までほんとにありがとうございました!!
編集 削除