※ 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の実装場所と実装方法について教えてください。
MFC VC++6.0 DestroyWindowの実装場所について
[開発環境]:Visual C++ 6.0
現在、Visual C++ 6.0を使ったプログラミングの勉強をしています。
MFC AppWizard (exe)でSDIプログラムのtest1プロジェクト作成後、メインフレームにボタンを実装し、そのボタンを押下するとモードレスダイアログを表示するというアプリケーションを作っているのですが、ダイアログを終了させる時のDestroyWindowの実装場所と実装方法が分かりません。
ダイアログ用のクラスはCmyDialogとしていますが、ダイアログの終了ボタンを実装した場合、そのボタン処理の中すなわちCmyDialogクラスのなかの関数で行うべきなのでしょうか?それともダイアログの作成と同様にメインフレームがわの処理(CTest1Viewクラスでの処理?)として行うべきなのでしょうか?この場合にはどのような場所でどのようなタイミングで実装すればよいのか分かりません。
ご存じの方、これらについて御教授お願いします。
以下プログラムの一部を記載します。
-test1view.cppの一部-(ここでダイアログの作成と表示をしています)
void CTest1View::OnButton1()
{
CmyDialog* myDLG = new CmyDialog;
myDLG->Create(IDD_DIALOG1,this);
myDLG->ShowWindow(SW_SHOW);
}
お礼
分かりづらい質問にご回答いただきありがとうございます。 質問後いろいろなサンプルプログラムを探したりして、 自分なりに一応動作するプログラムを作ってみました。 ご回答の通り、自分で管理さえしていればどこでDestroyWindowを 呼び出してもいいみたいですね。 一応、自分が現在行っている動作は、メインフレームを管理するクラス (CTest1Viewクラス)のデータメンバに管理用のポインタ CmyDialog* myDLG; を追加して、ダイアログ終了ボタン押下時にPostMessage処理により メインフレーム側にメッセージ送信してそのタイミングで myDLG->DestroyWindow(); を呼び出すこととし、メインフレームのデストラクタ処理により delete myDLG; として破棄することとしてみました。 一応、この処理で問題なく動作しているみたいなので、 こんな感じでいいのかなと思っています。 まだまだMFCプログラムに慣れていないので質問させていただくと 思いますが宜しくお願いします。