kamingout2020/04/22 01:54早速のご回答ありがとうございます。 OnDestroyで試してみたのですが、この処理に入る前に既に表示中のダイアログ画面が表示されなくなってしまいます。 実現したいこととしては、 ①ダイアログ画面棄却前にダイアログ画面が表示された状態でWaitCursorを出す ②ダイアログ画面が表示された状態で終了処理Aを行う ③終了処理Aが終わった時点でWaitCursorを解除してダイアログ画面を閉じる という流れになります。 良い方法はございませんか?
dodox862020/04/22 01:58OnClose(), OnDestroy()の中でTRACE()マクロでデバッグ端末に何かしら出力して、Window(WM_)メッセージや処理の流れを確認してみると良いです。
dodox862020/04/22 02:01fanaさん、フォローありがとうございます。そうでしたね。その点、失念しておりました。私もいつもWM_DESTROYでハンドリングしていました。(ダイアログボックスの画面は必要なかったので)
dodox862020/04/22 02:08>質問者kamingoutさん。 OnClose(WM_CLOSE)が呼ばれないケースでそのケースが何らかのイベント(何らかのWM_メッセージ)を伴うものであれば、そのメッセージをON_MESSAGE()でハンドリングしてその中で処理するか、カスタムWM_メッセージを自分にSendMessage()して終了処理を集中させるとか考えられます。終了時のメッセージが錯綜するので、少し危険かもしれませんし、そこまでするならコントロールメニューのCLOSEボタンやESCキーの終了の個別対応と労力があまり変わりませんが。
fana2020/04/22 02:10 編集右上の×,ESC, Enter, Alt+F4, DestroyWindow()をコール, EndDialog()をコール …(他に何があるかな?) と,まぁ,ダイアログが閉じる理由は色々あって,それによって DialogのOnOK,OnCancel,OnClose,OnDestroy,DestroyWindow等の 呼ばれる/呼ばれない が違うんですよね.
SHOMI2020/04/22 02:48ESCキーでダイアログが閉じられる件については、WM_KEYDOWNでWPARAMがVK_ESCAPEの際にベースクラスに渡さずFALSEを返せばはじけますね。
kamingout2020/04/22 03:59みなさま ご意見ありがとうございます。 ダイアログを閉じる処理がいくつもあるのため、特定の関数から実現したような処理を行うことはできないのですね。 実装方法自体は理解できましたので、どのように実現するかは検討したうえで利用させていただこうと思います。 ありがとうございました。
2020/04/22 01:54
2020/04/22 01:56
2020/04/22 01:58
2020/04/22 01:59
2020/04/22 02:01
2020/04/22 02:08
2020/04/22 02:10 編集
2020/04/22 02:48
2020/04/22 03:59