是否可以显示没有按钮的TaskDialog?我希望能够只显示一个进度条(带有消息),然后在我的处理完成时(从Timer事件)关闭TaskDialog窗口。现在,我可以显示一个禁用按钮,然后调用ButtonClick来关闭窗口,但是没有显示任何按钮并且使用CloseDialog方法将是理想的。
感谢。
答案 0 :(得分:2)
如果您没有指定任何按钮,TaskDialog()
和TaskDialogIndirect()
强制默认按钮,但您可以控制使用哪种按钮,因此我会在对话框中放置一个Abort按钮取消您正在显示状态的任何操作。或者如果用户不希望在不停止正在进行的操作的情况下再看到进度,则可以使用“隐藏”按钮。
您必须使用TaskDialogIndirect()
才能激活进度条功能。您还可以使用其回调功能获取对话框的HWND
,以便在需要时以可编程方式关闭它。
否则,请勿使用TaskDialog API。只需使用自己的UI创建自己的窗口,然后就可以随心所欲地使用它。
答案 1 :(得分:2)
从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();