TaskDialog function (commctrl.h)
The TaskDialog function creates, displays, and operates a task dialog. The task dialog contains application-defined message text and title, icons, and any combination of predefined push buttons. This function does not support the registration of a callback function to receive notifications.
Syntax
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
);
Parameters
[in] hwndOwner
Type: HWND
Handle to the owner window of the task dialog to be created. If this parameter is NULL, the task dialog has no owner window.
[in] hInstance
Type: HINSTANCE
Handle to the module that contains the icon resource identified by the pszIcon member, and the string resources identified by the pszWindowTitle and pszMainInstruction members. If this parameter is NULL, pszIcon must be NULL or a pointer to a null-terminated, Unicode string that contains a system resource identifier, for example, TD_ERROR_ICON.
[in] pszWindowTitle
Type: PCWSTR
Pointer to the string to be used for the task dialog title. This parameter is a null-terminated, Unicode string that contains either text, or an integer resource identifier passed through the MAKEINTRESOURCE macro. If this parameter is NULL, the filename of the executable program is used.
[in] pszMainInstruction
Type: PCWSTR
Pointer to the string to be used for the main instruction. This parameter is a null-terminated, Unicode string that contains either text, or an integer resource identifier passed through the MAKEINTRESOURCE macro. This parameter can be NULL if no main instruction is wanted.
[in] pszContent
Type: PCWSTR
Pointer to a string used for additional text that appears below the main instruction, in a smaller font. This parameter is a null-terminated, Unicode string that contains either text, or an integer resource identifier passed through the MAKEINTRESOURCE macro. Can be NULL if no additional text is wanted.
[in] dwCommonButtons
Type: TASKDIALOG_COMMON_BUTTON_FLAGS
Specifies the push buttons displayed in the dialog box. This parameter may be a combination of flags from the following group.
[in] pszIcon
Type: PCWSTR
Pointer to a string that identifies the icon to display in the task dialog. This parameter must be an integer resource identifier passed to the MAKEINTRESOURCE macro or one of the following predefined values. If this parameter is NULL, no icon will be displayed. If the hInstance parameter is NULL and one of the predefined values is not used, the TaskDialog function fails.
[out] pnButton
Type: int*
When this function returns, contains a pointer to an integer location that receives one of the following values:
Value | Description |
---|---|
0 | Function call failed. Refer to return value for more information. |
IDCANCEL | Cancel button was selected, Alt-F4 was pressed, Escape was pressed or the user clicked on the close window button. |
IDNO | No button was selected. |
IDOK | OK button was selected. |
IDRETRY | Retry button was selected. |
IDYES | Yes button was selected. |
IDCLOSE | Close button was selected. |
If this value is NULL, no value is returned.
Return value
Type: HRESULT
This function can return one of these values.
Return code | Description |
---|---|
|
The operation completed successfully. |
|
There is insufficient memory to complete the operation. |
|
One or more arguments are not valid. |
|
The operation failed. |
Remarks
When you use a task dialog box to indicate that the system is low on memory, the strings pointed to by the pszMainInstruction and pszWindowTitle parameters should not be taken from a resource file since an attempt to load the resource may fail.
If you create a task dialog while a dialog box is present, use a handle to the dialog box as the hWndParent parameter. The hWndParent parameter should not identify a child window, such as a control in a dialog box.
Because task dialog boxes use the correct system-defined UI elements, you should use them instead of using message boxes created with the MessageBox function. To achieve more functionality, use TaskDialogIndirect.
The following example code, to be included as part of a larger program, shows how to create a task dialog and capture input.
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
}
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows Vista [desktop apps only] |
Minimum supported server | Windows Server 2008 [desktop apps only] |
Target Platform | Windows |
Header | commctrl.h (include Commctrl.h) |
Library | Comctl32.lib |
DLL | Comctl32.dll (version 6) |