08/04/23 07:18:54
>>919
void CtimerDlg::OnBnClickedButton2()
{
// new msgdlg() → msgdlgのインスタンスをヒープに確保。
//
// msgdlg aaae = ... → msgdlgのインスタンスをスタックに確保して、
// msgdlg(msgdlg* ptr)に適合するコンストラクタで初期化。(※1)
msgdlg aaae = new msgdlg();
...
// 自動変数のaaaeがスコープから外れるのでデストラクタが呼ばれ、
// aaaaが保持していたウィンドウなどが削除される。
//
// (※1)のポインタptrをdeleteしていなければメモリリーク。
}
が理解出来ていないように見える。
作りたいのがモーダルダイアログなら、
{
msgdlg aaae;
aaae.Create(IDD_DIALOG1, this);
aaaa.DoModal();
}
関数を抜けてもmsgdlgを保持するなら、
グローバルでなくCtimerDlgのメンバにする。