- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MFC VC++6.0 DestroyWindowの実装場所について)
MFC VC++6.0 DestroyWindowの実装場所について
このQ&Aのポイント
- Visual C++ 6.0を使ったプログラミングの勉強中です。MFC AppWizardで作成したプログラムで、ボタンを押下するとモードレスダイアログが表示されます。ダイアログを終了させるためのDestroyWindowの実装場所が分かりません。
- ダイアログ用のクラスはCmyDialogとしています。ダイアログの終了ボタンを実装する場所は、CmyDialogクラスの関数内ですか、それともメインフレームの処理として行うべきですか?具体的な実装場所とタイミングが分かりません。
- ご存知の方、MFC VC++6.0におけるDestroyWindowの実装場所と実装方法について教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ずいぶん回答がないままのようですが、まだお困りでしょうか? とりあえず、回答します。 DestroyWindowを呼び出す場所については、ゆるされるタイミングで好きな時に。ということになるでしょうか。 つまり、このモードレスダイアログが要らなくなったときですね。 一般的?かどうか自信ないですが、Viewクラスの破棄時に呼ぶのが妥当かと。あるいは、このモードレスダイアログを使用する機能が終了した時とか。 ただご提示のサンプルでは、ダイアログのポインタがOnButton関数内の変数になってしまっているので、メンバ変数にするなどが必要です。
お礼
分かりづらい質問にご回答いただきありがとうございます。 質問後いろいろなサンプルプログラムを探したりして、 自分なりに一応動作するプログラムを作ってみました。 ご回答の通り、自分で管理さえしていればどこでDestroyWindowを 呼び出してもいいみたいですね。 一応、自分が現在行っている動作は、メインフレームを管理するクラス (CTest1Viewクラス)のデータメンバに管理用のポインタ CmyDialog* myDLG; を追加して、ダイアログ終了ボタン押下時にPostMessage処理により メインフレーム側にメッセージ送信してそのタイミングで myDLG->DestroyWindow(); を呼び出すこととし、メインフレームのデストラクタ処理により delete myDLG; として破棄することとしてみました。 一応、この処理で問題なく動作しているみたいなので、 こんな感じでいいのかなと思っています。 まだまだMFCプログラムに慣れていないので質問させていただくと 思いますが宜しくお願いします。