TaskDialogIndirect 函数 (commctrl.h)

TaskDialogIndirect 函数创建、显示和操作任务对话框。 任务对话框包含应用程序定义的图标、消息、标题、验证检查框、命令链接、推送按钮和单选按钮。 此函数可以注册回调函数以接收通知消息。

语法

HRESULT TaskDialogIndirect(
  [in]            const TASKDIALOGCONFIG *pTaskConfig,
  [out, optional] int                    *pnButton,
  [out, optional] int                    *pnRadioButton,
  [out, optional] BOOL                   *pfVerificationFlagChecked
);

参数

[in] pTaskConfig

类型: const TASKDIALOGCONFIG*

指向 TASKDIALOGCONFIG 结构的指针,该结构包含用于显示任务对话框的信息。

[out, optional] pnButton

类型: int*

接收以下任一变量的地址:

  • pTaskConfig 参数的 pButtons 成员中指定的按钮 ID 之一
  • 以下值之一:
说明
0 函数调用失败。 有关详细信息,请参阅返回值。
IDCANCEL 已选择“取消”按钮、按下 Alt-F4、按下 Escape 或用户单击关闭窗口按钮。
IDNO 未选择任何 按钮。
IDOK 已选择“确定”按钮。
IDRETRY 已选择“重试”按钮。
IDYES 已选择“”按钮。
 

如果此参数为 NULL,则不返回任何值。

[out, optional] pnRadioButton

类型: int*

接收 pTaskConfig 参数的 pRadioButtons 成员中指定的按钮 ID 之一的变量的地址。 如果此参数为 NULL,则不返回任何值。

[out, optional] pfVerificationFlagChecked

类型: BOOL*

接收以下值之一的变量的地址。

说明
TRUE 关闭对话框时,已选中验证复选框。
FALSE 关闭对话框时,未选中验证复选框。
 

如果此参数为 NULL,则禁用验证复选框。

返回值

类型: HRESULT

此函数可以返回其中一个值。

返回代码 说明
S_OK
操作已成功完成。
E_OUTOFMEMORY
内存不足,无法完成操作。
E_INVALIDARG
一个或多个参数无效。
E_FAIL
此操作失败。

注解

使用任务对话框指示系统内存不足时,不应从资源文件中获取 TASKDIALOGCONFIG 结构中各种字符串和图标成员指向的字符串,因为尝试加载资源可能会失败。

如果在存在对话框时创建任务对话框,请使用对话框的句柄作为 hWndParent 参数。 hWndParent 参数不应标识子窗口,例如对话框中的控件。

调用此函数时,不应隐藏或禁用父窗口。


int nButtonPressed                  = 0;
TASKDIALOGCONFIG config             = {0};
const TASKDIALOG_BUTTON buttons[]   = { 
                                        { IDOK, L"Change password" }
                                      };
config.cbSize                       = sizeof(config);
config.hInstance                    = hInst;
config.dwCommonButtons              = TDCBF_CANCEL_BUTTON;
config.pszMainIcon                  = TD_WARNING_ICON;
config.pszMainInstruction           = L"Change Password";
config.pszContent                   = L"Remember your changed password.";
config.pButtons                     = buttons;
config.cButtons                     = ARRAYSIZE(buttons);

TaskDialogIndirect(&config, &nButtonPressed, NULL, NULL);
switch (nButtonPressed)
{
    case IDOK:
        break; // the user pressed button 0 (change password).
    case IDCANCEL:
        break; // user canceled the dialog
    default:
        break; // should never happen
}

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 commctrl.h (包括 Commctrl.h)
Library Comctl32.lib
DLL Comctl32.dll (版本 6)

另请参阅

对话框