EndDialogの素朴な疑問

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: EndDialogの素朴な疑問

Re: EndDialogの素朴な疑問

by 西野孝雄 » 2006年3月17日(金) 18:03

返信ありがとうございます。

ぜ、全然知りませんでした・・・(がっくし)。

Callback.wbpは、見た事はありましたが、
良く分からなくて、全然チェックしておりませんでした。
自動でやってくれるてるんですね。

勉強になりました。ありがとうございました。

Re: EndDialogの素朴な疑問

by 7 » 2006年3月17日(金) 17:50

> ダイアログの×ボタンが押された時の処理は書かれていません。
プロジェクト内のCallback.wbpを見てみて下さい。SubWndというモーダルダイアログを作ってある、とすると、Function EventCall_SubWnd(hWnd,message,wParam,lParam) As LRESULTという関数が定義されていて、その関数を見ると、WM_CLOSEがモーダルダイアログに送られてくるとEndDialog()関数が実行されていることが分かります。

つまり、モーダルダイアログの×ボタンが押された時、EndDialog()関数が実行されています。問題はないと思います。

EndDialogの素朴な疑問

by 西野孝雄 » 2006年3月17日(金) 17:38

質問は、DialogBoxで表示したモーダルタイプダイアログを、EndDialogを使わずに破棄したらどうなるのか、です。

Win32プログラミング講座 ~ Step28. メモリ監視ツールを作る②では
ダイアログの×ボタンが押された時の処理は書かれていません。

その場合でもウインドウは消えますし、エラーも出ませんが、自動でEndDialogを呼んでるとは思えないし、
自分の環境だけ、たまたま問題がないのかもしれません。

MSDNでは、「DialogBox、~省略~ の各関数を使って作成したダイアログボックスは、
EndDialog 関数を使って破棄しなければなりません。」と書いてあります。

コードは、以下のようにすれば良い(と思ってます)ので、そういうことが聞きたいのではなく、
どうなるのか、問題は無いのか、を知りたいのです。

コード: 全て選択


Sub OptionDlg_QueryClose(ByRef cancel As Integer)
	cancel=TRUE
	EndDialog(hOptionDlg,0)
End Sub

cancel=TRUEを入れないと、ダイアログを呼んだメインウインドウも終了してしまいます。QueryCloseだけで終了するのにさらに、EndDialogも呼んでる、つまり、二回終了してるからだと推測します。
Ver4.13.00  WinXP HOME SP2

ページトップ