Поделиться через


Функция 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*

Адрес переменной, которая получает один из следующих вариантов:

  • один из идентификаторов кнопок, указанных в элементе pButtons параметра pTaskConfig
  • одно из следующих значений:
Значение Описание
0 Сбой вызова функции. Дополнительные сведения см. в разделе Возвращаемое значение.
IDCANCEL Была выбрана кнопка "Отмена", нажата клавиша ALT+F4, нажата escape-кнопка или пользователь нажал кнопку закрытия окна.
IDNO Кнопка не выбрана.
IDOK Выбрана кнопка ОК.
IDRETRY Выбрана кнопка "Повторить".
IDYES Выбрана кнопка "Да ".
 

Если этот параметр имеет значение NULL, значение не возвращается.

[out, optional] pnRadioButton

Тип: int*

Адрес переменной, которая получает один из идентификаторов кнопок, указанных в элементе pRadioButtons параметра pTaskConfig . Если этот параметр имеет значение 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
Header commctrl.h (включая Commctrl.h)
Библиотека Comctl32.lib
DLL Comctl32.dll (версия 6)

См. также раздел

Диалоговые окна