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
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
内存不足,无法完成操作。 |
|
一个或多个参数无效。 |
|
此操作失败。 |
注解
使用任务对话框指示系统内存不足时,不应从资源文件中获取 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) |
另请参阅