1

私の Delphi アプリケーションの一部は、別のプログラムからの情報にアクセスします。実行には時間がかかり、他のプログラムが応答しない場合があるため、コードのその部分を別のスレッドで実行します。

バックグラウンド スレッドの進行状況をユーザーに知らせるために、スレッドの開始後に TaskDialog を実行します。TaskDialog へのポインターをスレッドに渡し、スレッドが TaskDialog と同期してスレッドの進行に合わせて更新できるようにします。スレッドが終了したら、次を使用して TaskDialog に終了メッセージを送信しますPostMessage(CurrentTaskDialog.Handle, WM_CLOSE, 0, 0);

これまでのところすべてが機能していますが、ユーザーが TaskDialog の [キャンセル] ボタンをクリックした場合 (TaskDialog の唯一のボタンです)、プロセスをキャンセルしたいと考えています。私はそれを行う方法を理解できません。ユーザーがボタンをクリックしても、TaskDialog が終了メッセージを受信して​​も、ModalResultは常にmrCancelです。スレッドで別のを割り当てようとModalResultしましたが、それでも として評価されmrCancelます。

これを達成する方法はありますか?

4

1 に答える 1