宜しくお願いします。
環境 VS2005/MFC
ダイアログベースのプログラムにメニューバーを付加しています
例として
IEの表示→ステータスバーはチェックの表示・非表示ができます
MFCでその機能を実装できないでしょうか?
欲を言えばチェックボックスが付ならばベストなのですが
メニューバーのプロパティにCheckedという項目がありますがこの項目を
メンバー変数にできればできそうな気がするんですがいかがなものでしょうか。
※敢えて回答はしません
質問する前に調べてみた?
MSDNライブラリで検索したらすぐ答えは出る。
それでも無理やったらyahooでもgoogleでも検索したらなんぼでもサンプルソースはでて
くる。
自分なりにでも実験を繰り返して、それでも出来なかったときに質問するべきやと思うよ。
oopsさんへ
>質問する前に調べてみた?
調べましたが、検索する単語がよくなかったみたいです
その後も調べて、ここを参考に下記のようにしてみたのですが、
http://www.m--takahashi.com/bbs/pastlog/A4500/A4435.html
各メニューをマウスでクリックしたら
追加した関数へイベントは飛んでくるのですが肝心のチェックが付きません。
どこが問題なのでしょうか。
UPDATE_COMMAND_UI メッセージハンドラを定義。
CDlg クラスにデータメンバ UINT m_nState を追加。
コンストラクタなどで初期値として ID_DAY を設定。
________________
|ファイル 設 定| IDR_MAIN_MENU
------------------
|終了| |チェック1| ID_DAY
---- ----------
|チェック2| ID_WEEK
----------
|チェック3| ID_MONTH
----------
void CDlg::OnUpdateDay(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_nState == ID_DAY ? 1 : 0);
}
void C***Dlg::OnUpdateWeek(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_nState == ID_WEEK ? 1 : 0);
}
void C***Dlg::OnUpdateMonth(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_nState == ID_MONTH ? 1 : 0);
}
void CDlg::OnDay()
{
m_nState = ID_DAY;
RedrawWindow();
}
void CDlg::OnWeek()
{
m_nState = ID_WEEK;
RedrawWindow();
}
void C***Dlg::OnMonth()
{
m_nState = ID_MONTH;
RedrawWindow();
}
oopsさん
thxです旨くいきました。