2016-03-24 10 views
1

enter image description hereは、ユーザがサブメニュー項目を選択または

Iメニュー矩形項目の下にサブメニューを有するMFCアプリケーションを有するMFCないかどうかを知ります。ユーザーがGUIからクリックすると、サブメニューの黒は選択されません。ユーザーがサブメニューを選択するなどのインターフェイスが必要な場合は、それに加えて目盛りが表示されます。しかし、そうすることができませんでした。これは彼がクリックしたときにユーザーのフォーカスを取得しようとしたコードです。

This is for ON_COMMAND: 

ON_COMMAND(ID_IMAGEOPTIONS_IMAGEWITHBLACKRECTANGLES, &CMainFrame::OnToggleTestBlackRectangles)  

void CMainFrame::OnToggleTestBlackRectangles() 
{ 
CMenu menu; 
menu.LoadMenu(IDR_MAINFRAME); 
menu.CheckMenuItem(ID_IMAGEOPTIONS_IMAGEWITHBLACKRECTANGLES, MF_CHECKED); 
UINT SST = menu.GetMenuState(ID_RECTANGLE_BLACK, MF_BYCOMMAND); 
} 

This is for ON_UPDATE_COMMAND_UI: 

ON_UPDATE_COMMAND_UI(ID_IMAGEOPTIONS_IMAGEWITHBLACKRECTANGLES, &CMainFrame::OnCheckMenu) 
void CMainFrame::OnCheckMenu(CCmdUI *pCmdUI) 
{ 

    pCmdUI->SetCheck(0); 

} 

あっても、ユーザは、サブメニューをクリックすると、チェックマークが表示されず、さらにgetmenustate代わりに非0を返す - ゼロ値。

+0

このコードでは何も行いません。コマンドの横にチェックマークを追加しますか? –

+0

@BarmakShemirani私はちょうど私の投稿を更新し、私が実装した完全な機能を書いた。 – chaitanyakrishna

+1

メンバ変数 'BOOL m_black;を宣言して、trueまたはfalseに初期化します。 'OnToggle()'を '{m_black =!m_black;}'に変更してください。 'OnCheckMenu'を' {pCmdUI-> SetCheck(m_black);}に変更してください。 –

答えて

2

UI自体は更新されません。する必要があります。

お読みくださいHow to: Update User-Interface Objects

+0

あなたの答えを詳しく述べるべきです。あなたのリンクが無効になると、あなたの答えの価値が損なわれます。 – rrirower

関連する問題