私の Delphi アプリケーションの一部は、別のプログラムからの情報にアクセスします。実行には時間がかかり、他のプログラムが応答しない場合があるため、コードのその部分を別のスレッドで実行します。
バックグラウンド スレッドの進行状況をユーザーに知らせるために、スレッドの開始後に TaskDialog を実行します。TaskDialog へのポインターをスレッドに渡し、スレッドが TaskDialog と同期してスレッドの進行に合わせて更新できるようにします。スレッドが終了したら、次を使用して TaskDialog に終了メッセージを送信しますPostMessage(CurrentTaskDialog.Handle, WM_CLOSE, 0, 0);
これまでのところすべてが機能していますが、ユーザーが TaskDialog の [キャンセル] ボタンをクリックした場合 (TaskDialog の唯一のボタンです)、プロセスをキャンセルしたいと考えています。私はそれを行う方法を理解できません。ユーザーがボタンをクリックしても、TaskDialog が終了メッセージを受信しても、ModalResult
は常にmrCancel
です。スレッドで別のを割り当てようとModalResult
しましたが、それでも として評価されmrCancel
ます。
これを達成する方法はありますか?