没有按钮的任务对话框

发布于 2024-12-14 14:25:00 字数 156 浏览 0 评论 0原文

是否可以显示没有按钮的任务对话框?我希望能够仅显示一个进度条(带有消息),然后在处理完成时(来自计时器事件)关闭任务对话框窗口。现在,我可以显示一个禁用的按钮,然后调用 ButtonClick 来关闭窗口,但不显示任何按钮并使用 CloseDialog 方法将是理想的选择。

谢谢。

Is it possible to show the TaskDialog with no buttons? I would like to be able to show just a progress bar (with a message), and then close the TaskDialog window when when my processing is complete (from the Timer event). Right now, I can show a disabled button and then call ButtonClick to close the window, but showing no buttons and having a CloseDialog method would be ideal.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

欢你一世 2024-12-21 14:25:00

从 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();

Derive your own class from CTaskDialog

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

in 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();
客…行舟 2024-12-21 14:25:00

如果您未指定任何按钮, TaskDialog()TaskDialogIndirect() 都会强制使用默认按钮,但您确实可以控制使用哪种按钮,所以我会在对话框中放置一个中止按钮以取消您正在显示状态的任何操作。或者,如果用户不想再在不停止正在进行的操作的情况下查看进度,则可以使用隐藏按钮。

您必须使用 TaskDialogIndirect() 才能激活进度栏功能。您还可以使用其回调功能来获取对话框的 HWND ,以便您可以在需要时以编程方式关闭它。

否则,请勿使用 TaskDialog API。只需使用自己的 UI 创建自己的窗口,然后您就可以用它做任何您想做的事情。

Both TaskDialog() and TaskDialogIndirect() force a default button if you do not specify any buttons, but you do have control over what kind of buttons are used, so I would place an Abort button in the dialog to cancel whatever operation you are displaying status of. Or maybe a Hide button if the user does not want to see the progress anymore without stopping the operation that is in progress.

You have to use TaskDialogIndirect() in order to activate the progress bar feature. You can also use its callback feature to obtain the HWND of the dialog so you can close it programmably when needed.

Otherwise, don't use the TaskDialog API. Just create your own window with your own UI, then you can do whatever you want with it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文