引き続き質問させて頂きます。
メインダイアログのボタンをクリックしてモードレスダイアログを下記の様に表示することは出来ました。
#include…
//省略
CVIEW* myDL = new CVIEW;
//省略
void CtestDlg::OnBnClickedButton1()
{
//ウィンドウ表示
myDL->Create(IDD_DIALOG1);
}
このあと、表示されたダイアログのボタンをクリックして
メインダイアログのボタンを無効(グレーアウト)したいのですが
どうすればよろしいでしょうか。
モードレスダイアログの表示の時と同じように
Ctest* DL;
で宣言し
void CVIEW::OnBnClickedButton1()
{
DL->button1.EnableWindow(false);
}
とするとエラーが発生します。
エラー内容は
test.exe の 0x7c239eea (mfc71d.dll) でハンドルされていない例外が発生しました : 0xC0000005: 場所 0x00000db8 を読み込み中にアクセス違反が発生しました。 。
です。
DLはいつどこでどのように初期化していますか?
僕だったらメッセージをメインダイアログ(親)に飛ばして
親自身に自分のコントロール(ボタン)を無効化してもらいます。
この質問から読み始める人もいるかもしれません。
毎回、質問を起こす毎に開発環境も書くようにしてください。
以前の質問をわざわざ掘り出してみないとわからないような状態だと
レスをつけてくれる人が減ると思いますので。
多分、IDEを使っていると思うのですけれど、デバッガーで追ってみてはいかがですか?
実際に何が問題でその現象が起きているのかを自分で確認する事が先決だと思いますよ。
その上でわからない部分を整理して質問した方がいいです。
整理する段階で自分で解決できるかもしれませんし。
一見不可解に見える現象も実はリーズナブルな原因で起きている物です。
それを見つけ出して原因を突き止め、原因になっている部分を修正して
初めて意味がある修正になります。
まずは追いかける事からはじめましょう。
そのために開発環境にデバッガーが付いているのですから。
VCのデバッガーは強力で使いこなせば、かなりの事がわかるようになるはずです。
>REE様 huruya様 PATIO様
ご教授いただきありがとうございました。
huruya様に教えて頂いたメッセージを飛ばす方法で
解決致しました。
ツイート | ![]() |