Функция TaskDialog (commctrl.h)
Функция TaskDialog создает, отображает и управляет диалоговым окном задачи. Диалоговое окно задачи содержит текст и заголовок сообщения, значки и любое сочетание предопределенных кнопок. Эта функция не поддерживает регистрацию функции обратного вызова для получения уведомлений.
Синтаксис
HRESULT TaskDialog(
[in] HWND hwndOwner,
[in] HINSTANCE hInstance,
[in] PCWSTR pszWindowTitle,
[in] PCWSTR pszMainInstruction,
[in] PCWSTR pszContent,
[in] TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons,
[in] PCWSTR pszIcon,
[out] int *pnButton
);
Параметры
[in] hwndOwner
Тип: HWND
Дескриптор окна владельца создаваемого диалогового окна задачи. Если этот параметр имеет значение NULL, диалоговое окно задачи не имеет окна владельца.
[in] hInstance
Тип: HINSTANCE
Дескриптор модуля, который содержит ресурс значка, определенный элементом pszIcon , и строковые ресурсы, определяемые элементами pszWindowTitle и pszMainInstruction . Если этот параметр имеет значение NULL, pszIcon должен иметь значение NULL или указатель на строку Юникода, которая содержит идентификатор системного ресурса, например TD_ERROR_ICON.
[in] pszWindowTitle
Тип: PCWSTR
Указатель на строку, используемую для заголовка диалогового окна задачи. Этот параметр представляет собой строку Юникода, завершающуюся null, которая содержит либо текст, либо целочисленный идентификатор ресурса, передаваемый через макрос MAKEINTRESOURCE . Если этот параметр имеет значение NULL, используется имя файла исполняемой программы.
[in] pszMainInstruction
Тип: PCWSTR
Указатель на строку, используемую для инструкции main. Этот параметр представляет собой строку Юникода, завершающуюся null, которая содержит либо текст, либо целочисленный идентификатор ресурса, передаваемый через макрос MAKEINTRESOURCE . Этот параметр может иметь значение NULL, если не требуется main инструкции.
[in] pszContent
Тип: PCWSTR
Указатель на строку, используемую для дополнительного текста, который отображается под инструкцией main, шрифтом меньшего размера. Этот параметр представляет собой строку Юникода, завершающуюся null, которая содержит либо текст, либо целочисленный идентификатор ресурса, передаваемый через макрос MAKEINTRESOURCE . Может иметь значение NULL , если дополнительный текст не требуется.
[in] dwCommonButtons
Тип: TASKDIALOG_COMMON_BUTTON_FLAGS
Указывает кнопки, отображаемые в диалоговом окне. Этот параметр может быть сочетанием флагов из следующей группы.
[in] pszIcon
Тип: PCWSTR
Указатель на строку, которая определяет значок, отображаемый в диалоговом окне задачи. Этот параметр должен быть целочисленным идентификатором ресурса, передаваемым макросу MAKEINTRESOURCE , или одним из следующих предопределенных значений. Если этот параметр имеет значение NULL, значок не отображается. Если параметр hInstance имеет значение NULL и одно из предопределенных значений не используется, функция TaskDialog завершается ошибкой.
[out] pnButton
Тип: int*
При возврате этой функции содержит указатель на целочисленное расположение, которое получает одно из следующих значений:
Значение | Описание |
---|---|
0 | Сбой вызова функции. Дополнительные сведения см. в разделе Возвращаемое значение. |
IDCANCEL | Была выбрана кнопка "Отмена", нажата клавиша ALT+F4, нажата escape-кнопка или пользователь нажал кнопку закрытия окна. |
IDNO | Кнопка не выбрана. |
IDOK | Выбрана кнопка ОК. |
IDRETRY | Выбрана кнопка "Повторить". |
IDYES | Выбрана кнопка "Да ". |
IDCLOSE | Кнопка "Закрыть" была выбрана. |
Если это значение равно NULL, значение не возвращается.
Возвращаемое значение
Тип: HRESULT
Эта функция может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Операция выполнена успешно. |
|
Недостаточно памяти для завершения операции. |
|
Один или несколько аргументов являются недопустимыми. |
|
Операция не удалась. |
Комментарии
При использовании диалогового окна задачи для указания нехватки памяти в системе строки, на которые указывают параметры pszMainInstruction и pszWindowTitle , не следует брать из файла ресурсов, так как попытка загрузки ресурса может завершиться ошибкой.
При создании диалогового окна задачи при его наличии используйте дескриптор для диалогового окна в качестве параметра hWndParent . Параметр hWndParent не должен идентифицировать дочернее окно, например элемент управления в диалоговом окне.
Поскольку диалоговые окна задач используют правильные системные элементы пользовательского интерфейса, их следует использовать вместо окон сообщений, созданных с помощью функции MessageBox . Для получения дополнительных функциональных возможностей используйте TaskDialogIndirect.
В следующем примере кода, который будет включен в состав более крупной программы, показано, как создать диалоговое окно задачи и записать входные данные.
int nButtonPressed = 0;
TaskDialog(NULL, hInst,
MAKEINTRESOURCE(IDS_APPLICATION_TITLE),
MAKEINTRESOURCE(IDS_DOSOMETHING),
MAKEINTRESOURCE(IDS_SOMECONTENT),
TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON,
TD_WARNING_ICON,
&nButtonPressed);
if (IDOK == nButtonPressed)
{
// OK button pressed
}
else if (IDCANCEL == nButtonPressed)
{
// Cancel pressed
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | commctrl.h (включая Commctrl.h) |
Библиотека | Comctl32.lib |
DLL | Comctl32.dll (версия 6) |