モードレスダイアログ関係で2つ質問あります.ご助言ください.
1)現在,モードレスダイアログを使う練習をしています.ダイアログボックス上に
コマンドボタンを置かずに,右上に閉じるボタン(X)がある状態です.
閉じるボタンを押したらダイアログが消えるのはいいのですが,DestroyWindow
とかの記述はしていません.
DestroyWindowを書いたほうがメモリ管理上は良いのでしょうか?
2)ある命令に関連付けてモードレスダイアログを破棄したいのですが,どうしたらよ
いでしょうか?
class C*** : public CDlgのポインタpを取得して,
p->DestroyWindow();
としてみたのですが,
『値が割り当てられていないローカルな変数 'p' に対して参照が行われました。』
という警告が出てしまう状況です.
未熟なもので用語に間違い等ありましたらすいませんが,よろしくお願いします.
動作環境:VC6.0,Windows Meです.
以上.
1) デフォルトで DestroyWindow が呼ばれます。
2) ポインタはどのように取得されましたか?
単にポインタの変数を宣言しただけではないですか?
kazumaさん,
1)の回答ありがとうございました.
2)についてですが,
Class C??? :public CDlg
のポインタを
C??? *p;
として取得しました.それから,
p->DestroyWindow();
と記述しました.初心者なものでポインタの変数の意味が
わかりませんでした.問題点これでわかりますでしょうか?
それから,真夜中にご返答ありがとうございます.
申し訳ないことに私は熟睡中でした.
以上.
MSDNに modeless といううってつけのサンプルがあります。
これを動作させて、ソースを眺めてみれば、モードレスダイアログについて
いろいろと理解できると思います。
>C??? *p;
>として取得しました.それから,
>p->DestroyWindow();
>と記述しました.初心者なものでポインタの変数の意味が
>わかりませんでした.問題点これでわかりますでしょうか?
p = new ChogeDlg; などとして実体のアドレスを渡します。
インスタンス(実体)を指していないポインタを使ってはいけません。
kazumaさん,Bunさん,レスありがとうございました.
しかしながら,作成したダイアログのインスタンスの
とり方がわかりません.全く先に進まなくなりました
ので,今回の問題解決は後回しにして気長に勉強しよ
うかと思います.
ダイアログ作成時にダイアログのポインタを
public変数として取得してやることで,ダイアロ
グにさわらずにdestroywindowできました.
皆様お世話になりました.