Win32プログラミング講座 ~ Step28. メモリ監視ツールを作る②では
ダイアログの×ボタンが押された時の処理は書かれていません。
その場合でもウインドウは消えますし、エラーも出ませんが、自動でEndDialogを呼んでるとは思えないし、
自分の環境だけ、たまたま問題がないのかもしれません。
MSDNでは、「DialogBox、~省略~ の各関数を使って作成したダイアログボックスは、
EndDialog 関数を使って破棄しなければなりません。」と書いてあります。
コードは、以下のようにすれば良い(と思ってます)ので、そういうことが聞きたいのではなく、
どうなるのか、問題は無いのか、を知りたいのです。
コード: 全て選択
Sub OptionDlg_QueryClose(ByRef cancel As Integer)
cancel=TRUE
EndDialog(hOptionDlg,0)
End Sub
cancel=TRUEを入れないと、ダイアログを呼んだメインウインドウも終了してしまいます。QueryCloseだけで終了するのにさらに、EndDialogも呼んでる、つまり、二回終了してるからだと推測します。