ボタンなしでTaskDialogを表示することは可能ですか?プログレスバー(メッセージ付き)だけを表示し、処理が完了したら(Timerイベントから)TaskDialogウィンドウを閉じることができるようにしたいと思います。今のところ、無効になっているボタンを表示してからButtonClickを呼び出してウィンドウを閉じることができますが、ボタンを表示せず、CloseDialogメソッドを使用するのが理想的です。
ありがとう。
ボタンなしでTaskDialogを表示することは可能ですか?プログレスバー(メッセージ付き)だけを表示し、処理が完了したら(Timerイベントから)TaskDialogウィンドウを閉じることができるようにしたいと思います。今のところ、無効になっているボタンを表示してからButtonClickを呼び出してウィンドウを閉じることができますが、ボタンを表示せず、CloseDialogメソッドを使用するのが理想的です。
ありがとう。
CTaskDialogから独自のクラスを派生させる
class CTaskDlg : public CTaskDialog
{
in CTaskDlg.h declare:
public:
void CloseTaskDlg(void);
protected:
HWND m_TaskDlgHwnd;
virtual HRESULT OnInit();
};
CTaskDialog.cpp:
void CTaskDlg::CloseTaskDlg(void)
{
::SendMessage(m_TaskDlgHwnd, TDM_CLICK_BUTTON, static_cast<WPARAM>(TDCBF_OK_BUTTON), 0);
}
HRESULT CTaskDlg::OnInit()
{
m_TaskDlgHwnd = ::GetActiveWindow();
return S_OK;
}
CTaskDlg dlg;
dlg.CloseTaskDlg();
ボタンを指定しない場合は両方ともデフォルトのボタンTaskDialog()
を強制しますが、使用するボタンの種類は制御できるので、ダイアログに[中止]ボタンを配置して、ステータスを表示している操作をキャンセルします。TaskDialogIndirect()
または、ユーザーが進行中の操作を停止せずに進行状況を表示したくない場合は、[非表示]ボタンを使用することもできます。
TaskDialogIndirect()
プログレスバー機能を有効にするには、を使用する必要があります。コールバック機能を使用しHWND
てダイアログのを取得することもできるため、必要に応じてプログラムでダイアログを閉じることができます。
それ以外の場合は、TaskDialogAPIを使用しないでください。独自のUIを使用して独自のウィンドウを作成するだけで、それを使って好きなことを行うことができます。