1

ネイティブのWinAPIの世界でC++/MFCを使用してプログラムします。たとえば、ダイアログウィンドウクラス(MFCで作成され、CDialogから派生)があります。また、OnInitDialog()で、ウィンドウが表示されようとしたときにSetTimerメソッドを使用してタイマーを作成しました。私の問題は、このタイマー(または他の割り当てられたリソース)を適切に解放する必要があるのはいつですか?

PS。PostNcDestroy()で試してみましたが、KillTimerが失敗します。しかし、OnClose / WM_CLOSEで実行すると機能しますが、ユーザーが[OK]ボタンをクリックしてダイアログを閉じた場合は機能しません。それを行うための統一された通知はありますか?

4

1 に答える 1

3

ON_WM_DESTROYハンドラーで実行しています。これは、WM_CLOSEメソッドとPostNcDestroyメソッドの間で呼び出されます。これは、すべてのウィンドウリソースを破棄する必要がある場所です。

また、たとえば、GDIリソースはできるだけ早く解放する必要があり、再作成に時間がかからず、GDIリソースの数が非常に少ないことを忘れないでください。64ビットWindowsでも、デフォルトではシステム全体で10000のようなものだと思います。

于 2012-04-18T02:03:10.957 に答える