メニューの無効 – プログラミング – Home

通知
すべてクリア

[解決済] メニューの無効


ぴょん吉
 ぴょん吉
(@ぴょん吉)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

はじめまして、VCの初心者なので申し訳ありませんが、よろしくお願いします。

アプリケーション起動時にファイルを検索してファイルが無ければ、
「ファイルを開く」ボタンおよび、メニューの[ファイル]>[ファイルを開く]を有効にし、
「印刷」ボタンおよび、メニューの[ファイル]>[印刷]を無効にしたいのですが、
ある本によりますと[UPDATE_COMMAND_UI]というメンバ関数を使用して行うとありました。
しかし、このメンバ関数を使用して制御するのではなく、[OnInitDialog]のメンバ関数内に各
ボタンおよびメニューの制御を行いたいのです。
実際、ボタンの制御は出来るのですが、メニューの制御が出来ません。
なにとぞ、皆様の良い知恵をお貸しください。よろしくお願いします。

追記:[UPDATE_COMMAND_UI]のメンバ関数内に下記の制御をやってみましたがうまくいきませ
んでした。
 if([フラグ判定]){
  pCmdUI->Enable(false); // 無効
 }
 else{
  pCmdUI->Enable(true); // 有効
 }


引用未解決
トピックタグ
ぴょん吉
 ぴょん吉
(@ぴょん吉)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

解決方法が見つかりました。

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]のらららさんが記述されているのですが、ダイアログ
形式だとこのメッセージがないので、解らなかったので、質問させていただくこととなりました
ことをお詫びします。


返信引用
ぴょん吉
 ぴょん吉
(@ぴょん吉)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

すいません。
解決チェックを入れていませんでした。
あと、URLを記述するのに、タグが必要ないのですね。
改めてすいません。m(__)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました