SDL  2.0
SDL_windowstaskdialog.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2019 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 #include <pshpack1.h>
22 
23 typedef HRESULT(CALLBACK *PFTASKDIALOGCALLBACK)(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, LONG_PTR lpRefData);
24 
26 {
40  TDF_RTL_LAYOUT = 0x2000,
43  //#if (NTDDI_VERSION >= NTDDI_WIN8)
44  TDF_NO_SET_FOREGROUND = 0x00010000, // Don't call SetForegroundWindow() when activating the dialog
45  //#endif // (NTDDI_VERSION >= NTDDI_WIN8)
46  TDF_SIZE_TO_CONTENT = 0x01000000 // used by ShellMessageBox to emulate MessageBox sizing behavior
47 };
48 typedef int TASKDIALOG_FLAGS; // Note: _TASKDIALOG_FLAGS is an int
49 
51 {
52  TDM_NAVIGATE_PAGE = WM_USER + 101,
53  TDM_CLICK_BUTTON = WM_USER + 102, // wParam = Button ID
54  TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER + 103, // wParam = 0 (nonMarque) wParam != 0 (Marquee)
55  TDM_SET_PROGRESS_BAR_STATE = WM_USER + 104, // wParam = new progress state
56  TDM_SET_PROGRESS_BAR_RANGE = WM_USER + 105, // lParam = MAKELPARAM(nMinRange, nMaxRange)
57  TDM_SET_PROGRESS_BAR_POS = WM_USER + 106, // wParam = new position
58  TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER + 107, // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints)
59  TDM_SET_ELEMENT_TEXT = WM_USER + 108, // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
60  TDM_CLICK_RADIO_BUTTON = WM_USER + 110, // wParam = Radio Button ID
61  TDM_ENABLE_BUTTON = WM_USER + 111, // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID
62  TDM_ENABLE_RADIO_BUTTON = WM_USER + 112, // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID
63  TDM_CLICK_VERIFICATION = WM_USER + 113, // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus)
64  TDM_UPDATE_ELEMENT_TEXT = WM_USER + 114, // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
65  TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER + 115, // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required)
66  TDM_UPDATE_ICON = WM_USER + 116 // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise)
67 } TASKDIALOG_MESSAGES;
68 
70 {
73  TDN_BUTTON_CLICKED = 2, // wParam = Button ID
74  TDN_HYPERLINK_CLICKED = 3, // lParam = (LPCWSTR)pszHREF
75  TDN_TIMER = 4, // wParam = Milliseconds since dialog created or timer reset
77  TDN_RADIO_BUTTON_CLICKED = 6, // wParam = Radio Button ID
79  TDN_VERIFICATION_CLICKED = 8, // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0
80  TDN_HELP = 9,
81  TDN_EXPANDO_BUTTON_CLICKED = 10 // wParam = 0 (dialog is now collapsed), wParam != 0 (dialog is now expanded)
82 } TASKDIALOG_NOTIFICATIONS;
83 
84 typedef struct _TASKDIALOG_BUTTON
85 {
86  int nButtonID;
87  PCWSTR pszButtonText;
88 } TASKDIALOG_BUTTON;
89 
91 {
96 } TASKDIALOG_ELEMENTS;
97 
99 {
102 } TASKDIALOG_ICON_ELEMENTS;
103 
104 #define TD_WARNING_ICON MAKEINTRESOURCEW(-1)
105 #define TD_ERROR_ICON MAKEINTRESOURCEW(-2)
106 #define TD_INFORMATION_ICON MAKEINTRESOURCEW(-3)
107 #define TD_SHIELD_ICON MAKEINTRESOURCEW(-4)
108 
110 {
111  TDCBF_OK_BUTTON = 0x0001, // selected control return value IDOK
112  TDCBF_YES_BUTTON = 0x0002, // selected control return value IDYES
113  TDCBF_NO_BUTTON = 0x0004, // selected control return value IDNO
114  TDCBF_CANCEL_BUTTON = 0x0008, // selected control return value IDCANCEL
115  TDCBF_RETRY_BUTTON = 0x0010, // selected control return value IDRETRY
116  TDCBF_CLOSE_BUTTON = 0x0020 // selected control return value IDCLOSE
117 };
118 typedef int TASKDIALOG_COMMON_BUTTON_FLAGS; // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int
119 
120 typedef struct _TASKDIALOGCONFIG
121 {
122  UINT cbSize;
123  HWND hwndParent; // incorrectly named, this is the owner window, not a parent.
124  HINSTANCE hInstance; // used for MAKEINTRESOURCE() strings
125  TASKDIALOG_FLAGS dwFlags; // TASKDIALOG_FLAGS (TDF_XXX) flags
126  TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons; // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags
127  PCWSTR pszWindowTitle; // string or MAKEINTRESOURCE()
128  union
129  {
130  HICON hMainIcon;
131  PCWSTR pszMainIcon;
132  } /*DUMMYUNIONNAME*/;
134  PCWSTR pszContent;
135  UINT cButtons;
136  const TASKDIALOG_BUTTON *pButtons;
139  const TASKDIALOG_BUTTON *pRadioButtons;
145  union
146  {
147  HICON hFooterIcon;
149  } /*DUMMYUNIONNAME2*/;
150  PCWSTR pszFooter;
152  LONG_PTR lpCallbackData;
153  UINT cxWidth; // width of the Task Dialog's client area in DLU's. If 0, Task Dialog will calculate the ideal width.
154 } TASKDIALOGCONFIG;
155 
156 #include <poppack.h>
TDN_NAVIGATED
@ TDN_NAVIGATED
Definition: SDL_windowstaskdialog.h:72
_TASKDIALOG_NOTIFICATIONS
_TASKDIALOG_NOTIFICATIONS
Definition: SDL_windowstaskdialog.h:69
TDF_USE_COMMAND_LINKS
@ TDF_USE_COMMAND_LINKS
Definition: SDL_windowstaskdialog.h:31
TDN_CREATED
@ TDN_CREATED
Definition: SDL_windowstaskdialog.h:71
TDF_CAN_BE_MINIMIZED
@ TDF_CAN_BE_MINIMIZED
Definition: SDL_windowstaskdialog.h:42
TDIE_ICON_MAIN
@ TDIE_ICON_MAIN
Definition: SDL_windowstaskdialog.h:100
_TASKDIALOGCONFIG::cbSize
UINT cbSize
Definition: SDL_windowstaskdialog.h:122
_TASKDIALOGCONFIG::pszExpandedControlText
PCWSTR pszExpandedControlText
Definition: SDL_windowstaskdialog.h:143
_TASKDIALOG_ICON_ELEMENTS
_TASKDIALOG_ICON_ELEMENTS
Definition: SDL_windowstaskdialog.h:98
_TASKDIALOG_MESSAGES
_TASKDIALOG_MESSAGES
Definition: SDL_windowstaskdialog.h:50
_TASKDIALOGCONFIG::hMainIcon
HICON hMainIcon
Definition: SDL_windowstaskdialog.h:130
TDN_HYPERLINK_CLICKED
@ TDN_HYPERLINK_CLICKED
Definition: SDL_windowstaskdialog.h:74
_TASKDIALOGCONFIG::hInstance
HINSTANCE hInstance
Definition: SDL_windowstaskdialog.h:124
_TASKDIALOGCONFIG::dwCommonButtons
TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons
Definition: SDL_windowstaskdialog.h:126
TDE_FOOTER
@ TDE_FOOTER
Definition: SDL_windowstaskdialog.h:94
TDF_CALLBACK_TIMER
@ TDF_CALLBACK_TIMER
Definition: SDL_windowstaskdialog.h:38
_TASKDIALOG_COMMON_BUTTON_FLAGS
_TASKDIALOG_COMMON_BUTTON_FLAGS
Definition: SDL_windowstaskdialog.h:109
TDF_SHOW_PROGRESS_BAR
@ TDF_SHOW_PROGRESS_BAR
Definition: SDL_windowstaskdialog.h:36
TDM_ENABLE_RADIO_BUTTON
@ TDM_ENABLE_RADIO_BUTTON
Definition: SDL_windowstaskdialog.h:62
PFTASKDIALOGCALLBACK
HRESULT(CALLBACK * PFTASKDIALOGCALLBACK)(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, LONG_PTR lpRefData)
Definition: SDL_windowstaskdialog.h:23
_TASKDIALOG_BUTTON
Definition: SDL_windowstaskdialog.h:84
TDF_RTL_LAYOUT
@ TDF_RTL_LAYOUT
Definition: SDL_windowstaskdialog.h:40
_TASKDIALOG_BUTTON::pszButtonText
PCWSTR pszButtonText
Definition: SDL_windowstaskdialog.h:87
TDM_UPDATE_ICON
@ TDM_UPDATE_ICON
Definition: SDL_windowstaskdialog.h:66
TDM_CLICK_BUTTON
@ TDM_CLICK_BUTTON
Definition: SDL_windowstaskdialog.h:53
_TASKDIALOGCONFIG::lpCallbackData
LONG_PTR lpCallbackData
Definition: SDL_windowstaskdialog.h:152
_TASKDIALOGCONFIG::pszCollapsedControlText
PCWSTR pszCollapsedControlText
Definition: SDL_windowstaskdialog.h:144
_TASKDIALOGCONFIG::pszExpandedInformation
PCWSTR pszExpandedInformation
Definition: SDL_windowstaskdialog.h:142
TDCBF_OK_BUTTON
@ TDCBF_OK_BUTTON
Definition: SDL_windowstaskdialog.h:111
TDF_EXPAND_FOOTER_AREA
@ TDF_EXPAND_FOOTER_AREA
Definition: SDL_windowstaskdialog.h:33
TDN_BUTTON_CLICKED
@ TDN_BUTTON_CLICKED
Definition: SDL_windowstaskdialog.h:73
TASKDIALOG_COMMON_BUTTON_FLAGS
int TASKDIALOG_COMMON_BUTTON_FLAGS
Definition: SDL_windowstaskdialog.h:118
TDM_CLICK_VERIFICATION
@ TDM_CLICK_VERIFICATION
Definition: SDL_windowstaskdialog.h:63
_TASKDIALOGCONFIG::cButtons
UINT cButtons
Definition: SDL_windowstaskdialog.h:135
_TASKDIALOGCONFIG::nDefaultRadioButton
int nDefaultRadioButton
Definition: SDL_windowstaskdialog.h:140
_TASKDIALOGCONFIG::pButtons
const TASKDIALOG_BUTTON * pButtons
Definition: SDL_windowstaskdialog.h:136
_TASKDIALOGCONFIG::pszMainIcon
PCWSTR pszMainIcon
Definition: SDL_windowstaskdialog.h:131
TDF_SIZE_TO_CONTENT
@ TDF_SIZE_TO_CONTENT
Definition: SDL_windowstaskdialog.h:46
TDM_SET_PROGRESS_BAR_RANGE
@ TDM_SET_PROGRESS_BAR_RANGE
Definition: SDL_windowstaskdialog.h:56
TDN_RADIO_BUTTON_CLICKED
@ TDN_RADIO_BUTTON_CLICKED
Definition: SDL_windowstaskdialog.h:77
TDM_SET_PROGRESS_BAR_MARQUEE
@ TDM_SET_PROGRESS_BAR_MARQUEE
Definition: SDL_windowstaskdialog.h:58
TDCBF_CLOSE_BUTTON
@ TDCBF_CLOSE_BUTTON
Definition: SDL_windowstaskdialog.h:116
TDM_NAVIGATE_PAGE
@ TDM_NAVIGATE_PAGE
Definition: SDL_windowstaskdialog.h:52
_TASKDIALOGCONFIG::nDefaultButton
int nDefaultButton
Definition: SDL_windowstaskdialog.h:137
TDN_DESTROYED
@ TDN_DESTROYED
Definition: SDL_windowstaskdialog.h:76
TDM_SET_PROGRESS_BAR_POS
@ TDM_SET_PROGRESS_BAR_POS
Definition: SDL_windowstaskdialog.h:57
TDN_VERIFICATION_CLICKED
@ TDN_VERIFICATION_CLICKED
Definition: SDL_windowstaskdialog.h:79
TDF_SHOW_MARQUEE_PROGRESS_BAR
@ TDF_SHOW_MARQUEE_PROGRESS_BAR
Definition: SDL_windowstaskdialog.h:37
TDCBF_YES_BUTTON
@ TDCBF_YES_BUTTON
Definition: SDL_windowstaskdialog.h:112
_TASKDIALOGCONFIG::cxWidth
UINT cxWidth
Definition: SDL_windowstaskdialog.h:153
_TASKDIALOGCONFIG::pszWindowTitle
PCWSTR pszWindowTitle
Definition: SDL_windowstaskdialog.h:127
TDF_POSITION_RELATIVE_TO_WINDOW
@ TDF_POSITION_RELATIVE_TO_WINDOW
Definition: SDL_windowstaskdialog.h:39
TDF_VERIFICATION_FLAG_CHECKED
@ TDF_VERIFICATION_FLAG_CHECKED
Definition: SDL_windowstaskdialog.h:35
TDN_DIALOG_CONSTRUCTED
@ TDN_DIALOG_CONSTRUCTED
Definition: SDL_windowstaskdialog.h:78
TDE_MAIN_INSTRUCTION
@ TDE_MAIN_INSTRUCTION
Definition: SDL_windowstaskdialog.h:95
TDCBF_CANCEL_BUTTON
@ TDCBF_CANCEL_BUTTON
Definition: SDL_windowstaskdialog.h:114
_TASKDIALOG_ELEMENTS
_TASKDIALOG_ELEMENTS
Definition: SDL_windowstaskdialog.h:90
TDN_EXPANDO_BUTTON_CLICKED
@ TDN_EXPANDO_BUTTON_CLICKED
Definition: SDL_windowstaskdialog.h:81
TDF_NO_SET_FOREGROUND
@ TDF_NO_SET_FOREGROUND
Definition: SDL_windowstaskdialog.h:44
TDIE_ICON_FOOTER
@ TDIE_ICON_FOOTER
Definition: SDL_windowstaskdialog.h:101
TDF_ENABLE_HYPERLINKS
@ TDF_ENABLE_HYPERLINKS
Definition: SDL_windowstaskdialog.h:27
_TASKDIALOGCONFIG::pszFooterIcon
PCWSTR pszFooterIcon
Definition: SDL_windowstaskdialog.h:148
TDCBF_RETRY_BUTTON
@ TDCBF_RETRY_BUTTON
Definition: SDL_windowstaskdialog.h:115
TDF_USE_HICON_FOOTER
@ TDF_USE_HICON_FOOTER
Definition: SDL_windowstaskdialog.h:29
TDF_USE_COMMAND_LINKS_NO_ICON
@ TDF_USE_COMMAND_LINKS_NO_ICON
Definition: SDL_windowstaskdialog.h:32
TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE
@ TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE
Definition: SDL_windowstaskdialog.h:65
TDM_SET_PROGRESS_BAR_STATE
@ TDM_SET_PROGRESS_BAR_STATE
Definition: SDL_windowstaskdialog.h:55
_TASKDIALOGCONFIG::pszContent
PCWSTR pszContent
Definition: SDL_windowstaskdialog.h:134
_TASKDIALOG_FLAGS
_TASKDIALOG_FLAGS
Definition: SDL_windowstaskdialog.h:25
TASKDIALOG_FLAGS
int TASKDIALOG_FLAGS
Definition: SDL_windowstaskdialog.h:48
TDE_CONTENT
@ TDE_CONTENT
Definition: SDL_windowstaskdialog.h:92
_TASKDIALOGCONFIG::hwndParent
HWND hwndParent
Definition: SDL_windowstaskdialog.h:123
_TASKDIALOGCONFIG::pszFooter
PCWSTR pszFooter
Definition: SDL_windowstaskdialog.h:150
_TASKDIALOGCONFIG::dwFlags
TASKDIALOG_FLAGS dwFlags
Definition: SDL_windowstaskdialog.h:125
_TASKDIALOGCONFIG::pszVerificationText
PCWSTR pszVerificationText
Definition: SDL_windowstaskdialog.h:141
TDF_USE_HICON_MAIN
@ TDF_USE_HICON_MAIN
Definition: SDL_windowstaskdialog.h:28
TDE_EXPANDED_INFORMATION
@ TDE_EXPANDED_INFORMATION
Definition: SDL_windowstaskdialog.h:93
_TASKDIALOGCONFIG::pRadioButtons
const TASKDIALOG_BUTTON * pRadioButtons
Definition: SDL_windowstaskdialog.h:139
TDF_EXPANDED_BY_DEFAULT
@ TDF_EXPANDED_BY_DEFAULT
Definition: SDL_windowstaskdialog.h:34
_TASKDIALOGCONFIG::pszMainInstruction
PCWSTR pszMainInstruction
Definition: SDL_windowstaskdialog.h:133
_TASKDIALOGCONFIG::hFooterIcon
HICON hFooterIcon
Definition: SDL_windowstaskdialog.h:147
_TASKDIALOG_BUTTON::nButtonID
int nButtonID
Definition: SDL_windowstaskdialog.h:86
TDCBF_NO_BUTTON
@ TDCBF_NO_BUTTON
Definition: SDL_windowstaskdialog.h:113
TDN_HELP
@ TDN_HELP
Definition: SDL_windowstaskdialog.h:80
TDN_TIMER
@ TDN_TIMER
Definition: SDL_windowstaskdialog.h:75
TDM_SET_MARQUEE_PROGRESS_BAR
@ TDM_SET_MARQUEE_PROGRESS_BAR
Definition: SDL_windowstaskdialog.h:54
TDM_UPDATE_ELEMENT_TEXT
@ TDM_UPDATE_ELEMENT_TEXT
Definition: SDL_windowstaskdialog.h:64
_TASKDIALOGCONFIG
Definition: SDL_windowstaskdialog.h:120
TDF_NO_DEFAULT_RADIO_BUTTON
@ TDF_NO_DEFAULT_RADIO_BUTTON
Definition: SDL_windowstaskdialog.h:41
_TASKDIALOGCONFIG::cRadioButtons
UINT cRadioButtons
Definition: SDL_windowstaskdialog.h:138
TDF_ALLOW_DIALOG_CANCELLATION
@ TDF_ALLOW_DIALOG_CANCELLATION
Definition: SDL_windowstaskdialog.h:30
TDM_SET_ELEMENT_TEXT
@ TDM_SET_ELEMENT_TEXT
Definition: SDL_windowstaskdialog.h:59
_TASKDIALOGCONFIG::pfCallback
PFTASKDIALOGCALLBACK pfCallback
Definition: SDL_windowstaskdialog.h:151
TDM_CLICK_RADIO_BUTTON
@ TDM_CLICK_RADIO_BUTTON
Definition: SDL_windowstaskdialog.h:60
TDM_ENABLE_BUTTON
@ TDM_ENABLE_BUTTON
Definition: SDL_windowstaskdialog.h:61