2011-11-11 6 views
0

ボタンなしでTaskDialogを表示することはできますか?私は進行状況バー(メッセージ付き)を表示することができ、私の処理が完了したら(Timerイベントから)TaskDialogウィンドウを閉じることができます。今は無効なボタンを表示してからButtonClickを呼び出してウィンドウを閉じることができますが、ボタンを表示せずにCloseDialogメソッドを使用するのが理想的です。ボタンのないTaskDialog

ありがとうございました。

答えて

1

TaskDialog()TaskDialogIndirect()はいずれもボタンを指定しないとデフォルトのボタンを強制しますが、使用するボタンの種類を制御しているため、表示する操作をキャンセルするためにダイアログに中止ボタンを配置しますのステータス。または、進行中の操作を停止せずにユーザーが進行状況を見たくない場合は、非表示ボタンを使用します。

プログレスバー機能を有効にするには、TaskDialogIndirect()を使用する必要があります。コールバック機能を使用してダイアログのHWNDを取得し、必要なときにプログラマブルに閉じることができます。

それ以外の場合は、TaskDialog APIを使用しないでください。自分のUIで独自のウィンドウを作成するだけで、それを使って何でもできます。

1

はCTaskDialog.cppにCTaskDialog

class CTaskDlg : public CTaskDialog 
{ 
in CTaskDlg.h declare: 
    public: 
     void CloseTaskDlg(void); 
protected: 
    HWND m_TaskDlgHwnd; 
    virtual HRESULT OnInit(); 
}; 

から独自のクラスを派生:

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(); 
関連する問題