はじめまして、VCの初心者なので申し訳ありませんが、よろしくお願いします。
アプリケーション起動時にファイルを検索してファイルが無ければ、
「ファイルを開く」ボタンおよび、メニューの[ファイル]>[ファイルを開く]を有効にし、
「印刷」ボタンおよび、メニューの[ファイル]>[印刷]を無効にしたいのですが、
ある本によりますと[UPDATE_COMMAND_UI]というメンバ関数を使用して行うとありました。
しかし、このメンバ関数を使用して制御するのではなく、[OnInitDialog]のメンバ関数内に各
ボタンおよびメニューの制御を行いたいのです。
実際、ボタンの制御は出来るのですが、メニューの制御が出来ません。
なにとぞ、皆様の良い知恵をお貸しください。よろしくお願いします。
追記:[UPDATE_COMMAND_UI]のメンバ関数内に下記の制御をやってみましたがうまくいきませ
んでした。
if([フラグ判定]){
pCmdUI->Enable(false); // 無効
}
else{
pCmdUI->Enable(true); // 有効
}
解決方法が見つかりました。
ClassWizardでメッセージ・ハンドラでメッセージ[WM_INITPOPUPMENU]を選択するとメッセー
ジ・ハンドラが作成されます。
下記参照
void CMMAPSDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
{
CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu);
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
// ------ここから追加
if(ReadOK == 1){
pPopupMenu->EnableMenuItem(ID_MENUITEM_FILEOPEN, MF_GRAYED); // グレー表示
pPopupMenu->EnableMenuItem(ID_MENUITEM_PRINT, MF_ENABLED); // 有効にする
}
else{
pPopupMenu->EnableMenuItem(ID_MENUITEM_FILEOPEN, MF_ENABLED); // 有効にする
pPopupMenu->EnableMenuItem(ID_MENUITEM_PRINT, MF_GRAYED); // グレー表示
}
// ------ここまで追加
※ReadOKは読込時のフラグです。
ただし、ダイアログでの作成ですとメッセージ・ハンドラでメッセージ[WM_INITPOPUPMENU]が
ありません。
そこで、MFC ClassWizardのクラス情報タブのところにメッセージフィルタがあるので、
[ダイアログ]を[ウィンドウ]にすると、[WM_INITPOPUPMENU]のメッセージが表示され、
メッセージ・ハンドラを作成することが出来ます。
詳しくは、
<A HREF= http://www.bd.wakwak.com/~opapa/VC/Dialog/CommandHandler.htm>
のコマンドハンドラを参照してください。
追記:[過去のフォルダ一覧]の[200002]のらららさんが記述されているのですが、ダイアログ
形式だとこのメッセージがないので、解らなかったので、質問させていただくこととなりました
ことをお詫びします。
すいません。
解決チェックを入れていませんでした。
あと、URLを記述するのに、タグが必要ないのですね。
改めてすいません。m(__)m