2011-11-11 31 views
0

是否可以使用無按鈕顯示TaskDialog?我希望能夠僅顯示進度條(帶有消息),然後在處理完成時(從Timer事件)關閉TaskDialog窗口。現在,我可以顯示一個禁用的按鈕,然後調用ButtonClick關閉窗口,但不顯示任何按鈕並使用CloseDialog方法將是理想的。沒有按鈕的TaskDialog

謝謝。

回答

1

兩個TaskDialog()TaskDialogIndirect()力量,如果你不指定任何按鍵,但你必須在使用什麼樣的按鈕控制,所以我會放置一箇中止按鈕的對話框中取消你正在顯示任何操作的默認按鈕狀態。或者,如果用戶不想看到進度,而不停止正在進行的操作,也許可以隱藏按鈕。您必須使用TaskDialogIndirect()才能激活進度欄功能。您還可以使用其回調功能獲取對話框的HWND,以便在需要時可編程地關閉它。

否則,請勿使用TaskDialog API。只需用自己的用戶界面創建自己的窗口,然後就可以隨心所欲地做任何事情。

1

派生自己的類從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();