• ベストアンサー
※ 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の実装場所と実装方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.1

ずいぶん回答がないままのようですが、まだお困りでしょうか? とりあえず、回答します。 DestroyWindowを呼び出す場所については、ゆるされるタイミングで好きな時に。ということになるでしょうか。 つまり、このモードレスダイアログが要らなくなったときですね。 一般的?かどうか自信ないですが、Viewクラスの破棄時に呼ぶのが妥当かと。あるいは、このモードレスダイアログを使用する機能が終了した時とか。 ただご提示のサンプルでは、ダイアログのポインタがOnButton関数内の変数になってしまっているので、メンバ変数にするなどが必要です。

smallinoki
質問者

お礼

分かりづらい質問にご回答いただきありがとうございます。 質問後いろいろなサンプルプログラムを探したりして、 自分なりに一応動作するプログラムを作ってみました。 ご回答の通り、自分で管理さえしていればどこでDestroyWindowを 呼び出してもいいみたいですね。 一応、自分が現在行っている動作は、メインフレームを管理するクラス (CTest1Viewクラス)のデータメンバに管理用のポインタ CmyDialog* myDLG; を追加して、ダイアログ終了ボタン押下時にPostMessage処理により メインフレーム側にメッセージ送信してそのタイミングで myDLG->DestroyWindow(); を呼び出すこととし、メインフレームのデストラクタ処理により delete myDLG; として破棄することとしてみました。 一応、この処理で問題なく動作しているみたいなので、 こんな感じでいいのかなと思っています。 まだまだMFCプログラムに慣れていないので質問させていただくと 思いますが宜しくお願いします。