27#define NONAMELESSUNION
116 MONITOR_DEFAULTTOPRIMARY);
127 return info.rcWork.right -
info.rcWork.left;
146 unsigned int size, title_size;
147 static const WORD fontsize = 0x7fff;
173 if (!
template)
return NULL;
180 ptr = (
char *)(
template + 1);
197 if (button_id ==
id)
return buttons[
i];
250 if (!controls[
i])
continue;
413 rect.right = max_width;
423 size->cx = max_width;
434 LONG icon_width, icon_height, text_offset;
435 LONG max_width, max_text_height;
456 rect.right = max_width - icon_width - text_offset;
458 size->cy =
max(max_text_height, icon_height);
461 rect.right = max_width - icon_width - text_offset;
567 CreateWindowW(
WC_STATICW,
NULL,
WS_CHILD |
WS_VISIBLE |
SS_ICON, 0, 0, 0, 0, dialog_info->
hwnd,
NULL, 0,
NULL);
583 hwnd =
CreateWindowW(
class,
textW,
style, 0, 0, 0, 0, dialog_info->
hwnd,
NULL, 0,
NULL);
593 NONCLIENTMETRICSW ncm;
600 ncm.lfMessageFont.lfHeight = ncm.lfMessageFont.lfHeight * 5 / 4;
601 ncm.lfMessageFont.lfWeight =
FW_BOLD;
622 CreateWindowW(
PROGRESS_CLASSW,
NULL,
style, 0, 0, 0, 0, dialog_info->
hwnd,
NULL, 0,
NULL);
714 0, 0, 0, dialog_info->
hwnd, 0, 0, 0);
730 dialog_info->
verification_box =
CreateWindowW(
WC_BUTTONW,
textW,
style, 0, 0, 0, 0, dialog_info->
hwnd, 0, 0, 0);
765 if (!dialog_info->
buttons)
return;
771#define TASKDIALOG_INIT_COMMON_BUTTON(id) \
774 taskdialog_add_button(dialog_info, &dialog_info->buttons[count++], ID##id, MAKEINTRESOURCEW(IDS_BUTTON_##id), \
786#undef TASKDIALOG_INIT_COMMON_BUTTON
796 CreateWindowW(
WC_STATICW,
NULL,
WS_CHILD |
WS_VISIBLE |
SS_ICON, 0, 0, 0, 0, dialog_info->
hwnd,
NULL, 0, 0);
810 LONG max_width, main_icon_width, screen_width;
819 main_icon_width = dialog_info->
m.h_spacing;
824 max_width =
max(max_width,
size.cx + main_icon_width + dialog_info->
m.h_spacing * 2);
832 max_width =
min(max_width, screen_width);
845 y = *dialog_height + dialog_info->
m.v_spacing;
846 max_width = dialog_width -
x - dialog_info->
m.h_spacing;
849 *dialog_height =
y +
size.cy;
858 LONG dialog_width, dialog_height = 0;
859 LONG h_spacing, v_spacing;
860 LONG main_icon_right, main_icon_bottom;
861 LONG expando_right, expando_bottom;
863 LONG button_min_width, button_height;
865 LONG footer_icon_right, footer_icon_bottom;
873 h_spacing = dialog_info->
m.h_spacing;
874 v_spacing = dialog_info->
m.v_spacing;
878 main_icon_bottom = 0;
882 y = dialog_height + v_spacing;
886 main_icon_right =
x +
size.cx;
887 main_icon_bottom =
y +
size.cy;
905 x = main_icon_right + h_spacing;
906 y = dialog_height + v_spacing;
907 size.cx = dialog_width -
x - h_spacing;
910 dialog_height =
y +
size.cy;
916 x = main_icon_right + h_spacing;
917 y = dialog_height + v_spacing;
919 size.cx = dialog_width -
x - h_spacing;
921 dialog_height =
y +
size.cy;
927 x = main_icon_right + h_spacing;
933 size.cx = dialog_width -
x - h_spacing;
937 dialog_height =
y +
size.cy;
940 dialog_height =
max(dialog_height, main_icon_bottom);
943 expando_bottom = dialog_height;
948 y = dialog_height + v_spacing;
951 expando_right =
x +
size.cx;
952 expando_bottom =
y +
size.cy;
959 y = expando_bottom + v_spacing;
964 expando_right =
max(expando_right,
x +
size.cx);
965 expando_bottom =
y +
size.cy;
969 button_layout_infos =
Alloc(dialog_info->
button_count *
sizeof(*button_layout_infos));
978 button_layout_infos[
i].
width =
max(
size.cx, button_min_width);
982 x = expando_right + h_spacing;
985 button_layout_infos[
i].
line = line_count;
986 x += button_layout_infos[
i].
width + h_spacing;
987 line_widths[line_count] += button_layout_infos[
i].
width + h_spacing;
989 if ((
i + 1 < dialog_info->
button_count) && (
x + button_layout_infos[
i + 1].
width + h_spacing >= dialog_width))
991 x = expando_right + h_spacing;
998 for (
i = 1;
i < line_count - 1;
i++)
1000 int diff_now =
abs(line_widths[
i] - line_widths[
i - 1]);
1001 unsigned int j, last_button = 0;
1005 if (button_layout_infos[
j].
line ==
i - 1) last_button =
j;
1008 diff_changed =
abs(2 * button_layout_infos[last_button].
width + line_widths[
i] - line_widths[
i - 1]);
1010 if (diff_changed < diff_now)
1012 button_layout_infos[last_button].
line =
i;
1013 line_widths[
i] += button_layout_infos[last_button].
width;
1014 line_widths[
i - 1] -= button_layout_infos[last_button].
width;
1019 align = dialog_width - h_spacing;
1020 for (
i = 0;
i < line_count;
i++)
1022 int new_alignment = dialog_width - line_widths[
i];
1023 if (new_alignment <
align)
align = new_alignment;
1028 size.cy = button_height;
1032 if (
i > 0 && button_layout_infos[
i].
line != button_layout_infos[
i - 1].
line)
1035 dialog_height +=
size.cy + v_spacing;
1038 y = dialog_height + v_spacing;
1041 x += button_layout_infos[
i].
width + h_spacing;
1045 dialog_height +=
size.cy + v_spacing;
1046 dialog_height =
max(dialog_height, expando_bottom);
1048 Free(button_layout_infos);
1052 footer_icon_right = 0;
1053 footer_icon_bottom = dialog_height;
1057 y = dialog_height + v_spacing;
1061 footer_icon_right =
x +
size.cx;
1062 footer_icon_bottom =
y +
size.cy;
1068 dialog_height =
max(dialog_height, footer_icon_bottom);
1075 dialog_height += v_spacing;
1081 x = (ref_rect.
left + ref_rect.
right - dialog_width) / 2;
1082 y = (ref_rect.
top + ref_rect.
bottom - dialog_height) / 2;
1096 LONG icon_width, icon_height, text_offset;
1108 rect.right = icon_width;
1109 rect.bottom = icon_height;
1117 rect.left += icon_width + text_offset;
1128 NONCLIENTMETRICSW ncm;
1132 ncm.cbSize =
sizeof(ncm);
1135 memset(dialog_info, 0,
sizeof(*dialog_info));
1208 static const WCHAR taskdialog_info_propnameW[] = {
'T',
'a',
's',
'k',
'D',
'i',
'a',
'l',
'o',
'g',
'I',
'n',
'f',
'o',0};
1215 dialog_info =
GetPropW(
hwnd, taskdialog_info_propnameW);
1301 SetPropW(
hwnd, taskdialog_info_propnameW, dialog_info);
1374 int *radio_button,
BOOL *verification_flag_checked)
1380 TRACE(
"%p, %p, %p, %p\n", taskconfig,
button, radio_button, verification_flag_checked);
1407 TRACE(
"%p, %p, %s, %s, %s, %#x, %s, %p\n", owner,
hinst,
debugstr_w(
title),
debugstr_w(main_instruction),
1410 memset(&taskconfig, 0,
sizeof(taskconfig));
1411 taskconfig.
cbSize =
sizeof(taskconfig);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
static void taskdialog_add_verification_box(struct taskdialog_info *dialog_info)
static void taskdialog_add_main_instruction(struct taskdialog_info *dialog_info)
#define TASKDIALOG_INIT_COMMON_BUTTON(id)
static const UINT DIALOG_MIN_WIDTH
static void taskdialog_get_expando_size(struct taskdialog_info *dialog_info, HWND hwnd, SIZE *size)
static const UINT DIALOG_EXPANDO_ICON_HEIGHT
static unsigned int taskdialog_get_reference_rect(const TASKDIALOGCONFIG *taskconfig, RECT *ret)
static HWND taskdialog_find_button(HWND *buttons, INT count, INT id)
static void taskdialog_draw_expando_control(struct taskdialog_info *dialog_info, LPDRAWITEMSTRUCT dis)
static void taskdialog_layout(struct taskdialog_info *dialog_info)
static HRESULT taskdialog_notify(struct taskdialog_info *dialog_info, UINT notification, WPARAM wparam, LPARAM lparam)
static const UINT ID_TIMER
HRESULT WINAPI TaskDialogIndirect(const TASKDIALOGCONFIG *taskconfig, int *button, int *radio_button, BOOL *verification_flag_checked)
static void taskdialog_get_button_size(HWND hwnd, LONG max_width, SIZE *size)
static void taskdialog_add_content(struct taskdialog_info *dialog_info)
static BOOL CALLBACK takdialog_destroy_control(HWND hwnd, LPARAM lParam)
static void taskdialog_add_radio_buttons(struct taskdialog_info *dialog_info)
static void taskdialog_add_main_icon(struct taskdialog_info *dialog_info)
static void taskdialog_enable_radio_button(const struct taskdialog_info *dialog_info, INT id, BOOL enable)
static const UINT DIALOG_BUTTON_HEIGHT
static ULONG_PTR taskdialog_get_standard_icon(LPCWSTR icon)
static void taskdialog_add_progress_bar(struct taskdialog_info *dialog_info)
HRESULT WINAPI TaskDialog(HWND owner, HINSTANCE hinst, const WCHAR *title, const WCHAR *main_instruction, const WCHAR *content, TASKDIALOG_COMMON_BUTTON_FLAGS common_buttons, const WCHAR *icon, int *button)
static void taskdialog_click_button(struct taskdialog_info *dialog_info, INT id)
static void taskdialog_init(struct taskdialog_info *dialog_info, HWND hwnd)
static const UINT DIALOG_EXPANDO_ICON_WIDTH
static void taskdialog_label_layout(struct taskdialog_info *dialog_info, HWND hwnd, INT start_x, LONG dialog_width, LONG *dialog_height, BOOL syslink)
static void taskdialog_add_button(struct taskdialog_info *dialog_info, HWND *button, INT_PTR id, const WCHAR *text, BOOL custom_button)
static DLGTEMPLATE * create_taskdialog_template(const TASKDIALOGCONFIG *taskconfig)
static void taskdialog_button_set_shield(const struct taskdialog_info *dialog_info, INT id, BOOL elevate)
static void taskdialog_move_controls_vertically(HWND parent, HWND *controls, INT count, INT offset)
static const UINT DIALOG_SPACING
static void taskdialog_add_footer_text(struct taskdialog_info *dialog_info)
static void taskdialog_destroy(struct taskdialog_info *dialog_info)
static void taskdialog_on_button_click(struct taskdialog_info *dialog_info, HWND hwnd, WORD id)
static void taskdialog_add_command_links(struct taskdialog_info *dialog_info)
static BOOL taskdialog_hyperlink_enabled(struct taskdialog_info *dialog_info)
static void taskdialog_toggle_expando_control(struct taskdialog_info *dialog_info)
static HWND taskdialog_create_label(struct taskdialog_info *dialog_info, const WCHAR *text, HFONT font, BOOL syslink)
static void taskdialog_du_to_px(struct taskdialog_info *dialog_info, LONG *width, LONG *height)
static void taskdialog_add_buttons(struct taskdialog_info *dialog_info)
static void taskdialog_set_icon(struct taskdialog_info *dialog_info, INT element, HICON icon)
static LONG taskdialog_get_dialog_width(struct taskdialog_info *dialog_info)
static WCHAR * taskdialog_gettext(struct taskdialog_info *dialog_info, BOOL user_resource, const WCHAR *text)
static void taskdialog_check_default_radio_buttons(struct taskdialog_info *dialog_info)
static void taskdialog_get_label_size(struct taskdialog_info *dialog_info, HWND hwnd, LONG max_width, SIZE *size, BOOL syslink)
static void taskdialog_add_expando_button(struct taskdialog_info *dialog_info)
static const UINT DIALOG_TIMER_MS
static void taskdialog_set_element_text(struct taskdialog_info *dialog_info, TASKDIALOG_ELEMENTS element, const WCHAR *text)
static void taskdialog_click_radio_button(const struct taskdialog_info *dialog_info, INT id)
static const UINT DIALOG_BUTTON_WIDTH
static void taskdialog_add_expanded_info(struct taskdialog_info *dialog_info)
static void taskdialog_add_footer_icon(struct taskdialog_info *dialog_info)
static void template_write_data(char **ptr, const void *src, unsigned int size)
static void taskdialog_enable_button(const struct taskdialog_info *dialog_info, INT id, BOOL enable)
static BOOL taskdialog_use_command_link(struct taskdialog_info *dialog_info)
static INT_PTR CALLBACK taskdialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static WCHAR * taskdialog_get_exe_name(WCHAR *name, DWORD length)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
DWORD WINAPI GetTickCount(VOID)
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
int align(int length, int align)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static const WCHAR titleW[]
static const WCHAR emptyW[]
#define memcpy(s1, s2, n)
static const WCHAR textW[]
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
unsigned __int3264 UINT_PTR
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
INT WINAPI DrawTextW(HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags)
#define BS_AUTORADIOBUTTON
_Out_opt_ int _Out_opt_ int * cy
struct tagNMLINK * PNMLINK
#define TD_INFORMATION_ICON
#define BS_DEFCOMMANDLINK
int TASKDIALOG_COMMON_BUTTON_FLAGS
@ TDE_EXPANDED_INFORMATION
enum _TASKDIALOG_ELEMENTS TASKDIALOG_ELEMENTS
@ TDF_NO_DEFAULT_RADIO_BUTTON
@ TDF_EXPANDED_BY_DEFAULT
@ TDF_ALLOW_DIALOG_CANCELLATION
@ TDF_USE_COMMAND_LINKS_NO_ICON
@ TDF_SHOW_MARQUEE_PROGRESS_BAR
@ TDF_POSITION_RELATIVE_TO_WINDOW
@ TDF_VERIFICATION_FLAG_CHECKED
@ TDM_SET_PROGRESS_BAR_RANGE
@ TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE
@ TDM_ENABLE_RADIO_BUTTON
@ TDM_SET_PROGRESS_BAR_MARQUEE
@ TDM_SET_PROGRESS_BAR_POS
@ TDM_SET_PROGRESS_BAR_STATE
@ TDM_SET_MARQUEE_PROGRESS_BAR
@ TDM_UPDATE_ELEMENT_TEXT
@ TDN_EXPANDO_BUTTON_CLICKED
@ TDN_VERIFICATION_CLICKED
@ TDN_RADIO_BUTTON_CLICKED
TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons
PCWSTR pszExpandedInformation
PFTASKDIALOGCALLBACK pfCallback
const TASKDIALOG_BUTTON * pRadioButtons
PCWSTR pszMainInstruction
PCWSTR pszCollapsedControlText
const TASKDIALOG_BUTTON * pButtons
PCWSTR pszVerificationText
PCWSTR pszExpandedControlText
WCHAR szUrl[L_MAX_URL_LENGTH]
HFONT main_instruction_font
struct taskdialog_info::@341 m
const TASKDIALOGCONFIG * taskconfig
BOOL verification_checked
#define OK(condition, fail_message,...)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *)
BOOL WINAPI GetCharWidthW(_In_ HDC hdc, _In_ UINT iFirst, _In_ UINT iLast, _Out_writes_(iLast+1 - iFirst) LPINT lpBuffer)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
struct tagDRAWITEMSTRUCT * LPDRAWITEMSTRUCT
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HWND WINAPI GetActiveWindow(void)
INT_PTR WINAPI DialogBoxIndirectParamW(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
BOOL WINAPI DrawFrameControl(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
#define IS_INTRESOURCE(i)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
BOOL WINAPI IsRectEmpty(_In_ LPCRECT)
BOOL WINAPI DeleteMenu(_In_ HMENU, _In_ UINT, _In_ UINT)
HMENU WINAPI GetSystemMenu(_In_ HWND, _In_ BOOL)
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
UINT_PTR WINAPI SetTimer(_In_opt_ HWND, _In_ UINT_PTR, _In_ UINT, _In_opt_ TIMERPROC)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetWindowTextLengthW(_In_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)
#define MAKEINTRESOURCEW(i)
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)
#define SetWindowLongPtrW
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free