23#define NONAMELESSUNION
135#define WM_MSI_DIALOG_CREATE (WM_USER+0x100)
136#define WM_MSI_DIALOG_DESTROY (WM_USER+0x101)
138#define USER_INSTALLSTATE_ALL 0x1000
253 if( *
p !=
'\\' && *
p !=
'&' )
257 for(
i=++
p;
i<
q;
i++ )
258 if( *
i ==
'}' || *
i ==
'\\' )
293 memset( &lf, 0,
sizeof lf );
430 TRACE(
"Dialog %s control %s hwnd %p\n",
448 if (!rec)
return NULL;
489 flags &= ~LR_DEFAULTSIZE;
539 memset( &tvi, 0,
sizeof tvi );
576 if (text_fmt)
text = text_fmt;
593 TRACE(
"progress: func %lu val1 %lu val2 %lu\n",
func, val1, val2 );
610 ctrl->progress_current = 0;
616 if (val2)
dialog->package->action_progress_increment = val1;
617 else dialog->package->action_progress_increment = 0;
620 if (
ctrl->progress_backwards)
623 else ctrl->progress_current = 0;
627 if (
ctrl->progress_current + units < ctrl->progress_max)
ctrl->progress_current +=
units;
628 else ctrl->progress_current =
ctrl->progress_max;
636 FIXME(
"unknown progress message %lu\n",
func );
674 TRACE(
"already subscribed\n");
678 if (!(sub =
msi_alloc(
sizeof(*sub) )))
return;
712 L"SELECT * FROM `EventMapping` WHERE `Dialog_` = '%s' AND `Control_` = '%s'",
853 while (*
p && *
p !=
'{')
p++;
854 if (!*
p++)
return text;
856 while (*
p && *
p !=
'}')
p++;
857 if (!*
p++)
return text;
873 if (
p && (
p[1] == 0 ||
p[1] ==
' '))
881 else ERR(
"Badly formatted property string - what happens?\n");
932 L"SELECT * FROM `ControlEvent` WHERE `Dialog_` = '%s' AND `Control_` = '%s' ORDER BY `Ordering`",
936 ERR(
"query failed\n");
943 if (
dialog->pending_event)
956 HBITMAP hOleBitmap = 0,
hBitmap = 0, hOldSrcBitmap, hOldDestBitmap;
974 IStream_Release( stm );
977 ERR(
"failed to load picture\n");
981 r = IPicture_get_Handle( pic, (OLE_HANDLE *)&hOleBitmap );
984 ERR(
"failed to get bitmap handle\n");
992 ERR(
"failed to get bitmap size\n");
1007 StretchBlt( destdc, 0, 0,
cx,
cy, srcdc, 0, 0, bm.bmWidth, bm.bmHeight,
SRCCOPY );
1014 if (pic) IPicture_Release( pic );
1107 return state[0] ? 1 : 0;
1228 TRACE(
"Dialog %s control %s hwnd %p\n",
1441 for (
j = 0;
j <
info->num_items;
j++)
1465 info->addpos_items++;
1477 L"SELECT * FROM `ComboBox` WHERE `Property` = '%s' ORDER BY `Order`",
property );
1588 for (
j = 0;
j <
info->num_items;
j++)
1645 info->addpos_items = 0;
1675#define MAX_NUM_DIGITS 11
1718#define MASK_MAX_GROUPS 20
1760 for(
i=0,
n=0;
i<
info->num_groups;
i++ )
1762 if (
info->group[
i].len == ~0
u)
1770 if (
info->group[
i].len +
n >
info->num_chars)
1772 ERR(
"can't fit control %d text into template\n",
i);
1777 for(
r=0;
r<
info->group[
i].len;
r++)
1784 if(
r !=
info->group[
i].len )
1791 TRACE(
"%d/%d controls were good\n",
i,
info->num_groups);
1793 if(
i ==
info->num_groups )
1808 for(
i=0;
i<
info->num_groups;
i++ )
1813 if(
i >= (
info->num_groups-1) )
1863 for(
i = 0;
i <
info->num_groups;
i++ )
1905 if(
p[0] == 0 ||
p[0] ==
'>' )
1910 info->group[0].type =
'&';
1911 info->group[0].len = ~0
u;
1918 for(
n=0;
p[
n] ==
p[0];
n++ )
1921 info->group[
i].type =
p[0];
1937 info->num_groups =
i;
1957 for(
i = 0;
i <
info->num_groups;
i++ )
1961 if (
info->num_chars)
1975 ERR(
"failed to create mask edit sub window\n");
2006 WARN(
"mask template is empty\n");
2023 ERR(
"Failed to create maskedit container\n");
2238 group->parent->hwnd );
2317 r =
MSI_OpenQuery( package->db, &
view,
L"SELECT * FROM `RadioButton` WHERE `Property` = '%s'", prop );
2320 ERR(
"query failed for dialog %s radio group %s\n",
2326 group.parent = control;
2420 package = info->dialog->package;
2425 ERR(
"item %p feature was NULL\n",
hItem);
2517 memset( &tvis, 0,
sizeof tvis );
2536 if (
feature->Display % 2 != 0 )
2542 info->selected = hfirst;
2547 const int bm_width = 32, bm_height = 16, bm_count = 3;
2548 const int bm_resource = 0x1001;
2556 ERR(
"failed to create image list\n");
2560 for (
i=0;
i<bm_count;
i++)
2565 ERR(
"failed to load bitmap %d\n",
i);
2727 for (
j = 0;
j <
info->num_items;
j++)
2751 info->addpos_items++;
2762 L"SELECT * FROM `ListBox` WHERE `Property` = '%s' ORDER BY `Order`",
property );
2834 info->addpos_items = 0;
2917 if ( !
wcscmp( wfd.cFileName,
L"." ) || !
wcscmp( wfd.cFileName,
L".." ) )
2924 item.pszText = wfd.cFileName;
3023 switch (nmhdr->
code)
3039 ERR(
"no list-view item selected\n");
3124 L"VolumeCostVolume",
3126 L"VolumeCostAvailable",
3127 L"VolumeCostRequired",
3128 L"VolumeCostDifference",
3169 FIXME(
"Style prefix not supported\n");
3201 total_cost += ((
LONGLONG)each_cost) * 512;
3207 total_cost -= ((
LONGLONG)each_cost) * 512;
3232 if ( !
size )
return;
3235 if ( !drives )
return;
3261 difference =
free.QuadPart - cost;
3264 lvitem.iSubItem = 1;
3265 lvitem.pszText = size_text;
3266 lvitem.cchTextMax =
lstrlenW(size_text) + 1;
3270 lvitem.iSubItem = 2;
3271 lvitem.pszText = size_text;
3272 lvitem.cchTextMax =
lstrlenW(size_text) + 1;
3275 lvitem.iSubItem = 3;
3276 lvitem.pszText = cost_text;
3277 lvitem.cchTextMax =
lstrlenW(cost_text) + 1;
3281 lvitem.iSubItem = 4;
3282 lvitem.pszText = size_text;
3283 lvitem.cchTextMax =
lstrlenW(size_text) + 1;
3327 ERR(
"No ComboBox item selected!\n");
3348 if ( !
size )
return;
3351 if ( !drives )
return;
3403 while (*
p && *
p !=
'<')
p++;
3416 if (*
p ==
'\"' || *
p ==
'\'')
quote = *
p++;
3454 else item.szUrl[0] = 0;
3508 if (
MSI_OpenQuery(
dialog->package->db, &
view,
L"SELECT * FROM `ListView` WHERE `Property` = '%s' ORDER BY `Order`",
3643 memset( &lf, 0,
sizeof lf );
3695 center.
x =
MulDiv( center.
x, xres, 100 );
3696 center.
y =
MulDiv( center.
y, yres, 100 );
3699 if (
dialog->package->center_x &&
dialog->package->center_y)
3701 pos->left =
dialog->package->center_x - sz.
cx / 2.0;
3703 pos->top =
dialog->package->center_y - sz.
cy / 2.0;
3708 pos->left = center.
x - sz.
cx/2;
3710 pos->top = center.
y - sz.
cy/2;
3714 dialog->package->center_x = center.
x;
3715 dialog->package->center_y = center.
y;
3729 struct list tab_chain;
3736 dialog->hWndFocus = control->hwnd;
3741 if (!control->tabnext)
break;
3750 prev = control->hwnd;
3783 if (!
dialog->default_font)
3786 if (!
dialog->default_font)
3847 if ( control && control->
handler )
3955 while( !
dialog->finished )
4033 dialog->package = package;
4114 dialog->attributes &= ~msidbDialogAttributesModal;
4216 package = MSI_CreatePackage( db );
4236 TRACE(
"%lu %p\n", hdb, phPreview );
4347 if (destroy_modeless && package->
dialog)
4373 if (!
wcscmp( argument,
L"Exit" ))
4375 else if (!
wcscmp( argument,
L"Retry" ))
4377 else if (!
wcscmp( argument,
L"Ignore" ))
4379 else if (!
wcscmp( argument,
L"Return" ))
4445 FIXME(
"doing nothing\n");
4548 if (!
row)
return -1;
4553 if (rc == -2) rc = 0;
4558 if (!
row)
return -1;
4572 if (package->
next_dialog)
ERR(
"Already got next dialog... ignoring it\n");
4596 TRACE(
"setting install level to %d\n",
level);
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
static previewinfo preview
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
#define ERROR_NOT_ENOUGH_MEMORY
static const WCHAR quote[]
INT WINAPI ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
static WCHAR * strdupAtoW(const char *str)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define ERROR_INVALID_HANDLE
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI GetDiskFreeSpaceExW(IN LPCWSTR lpDirectoryName OPTIONAL, OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller, OUT PULARGE_INTEGER lpTotalNumberOfBytes, OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
DWORD WINAPI GetLogicalDriveStringsW(IN DWORD nBufferLength, IN LPWSTR lpBuffer)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
MSIFOLDER * msi_get_loaded_folder(MSIPACKAGE *package, const WCHAR *dir)
UINT msi_validate_product_id(MSIPACKAGE *package)
UINT ACTION_PerformAction(MSIPACKAGE *package, const WCHAR *action)
WCHAR * msi_create_temp_file(MSIDATABASE *db)
static UINT msi_dialog_set_control_condition(MSIRECORD *rec, LPVOID param)
static UINT event_do_action(msi_dialog *dialog, const WCHAR *argument)
static LPWSTR msi_get_deformatted_field(MSIPACKAGE *package, MSIRECORD *rec, int field)
UINT(* msi_handler)(msi_dialog *, msi_control *, WPARAM)
static UINT event_remove(msi_dialog *dialog, const WCHAR *argument)
static void msi_seltree_update_siblings_and_children_installstate(HWND hwnd, HTREEITEM curr, MSIPACKAGE *package, INSTALLSTATE state)
#define WM_MSI_DIALOG_DESTROY
void msi_event_cleanup_all_subscriptions(MSIPACKAGE *package)
static INT msi_dialog_scale_unit(msi_dialog *dialog, INT val)
static WCHAR * get_unique_folder_name(const WCHAR *root, int *ret_len)
static UINT msi_dialog_listview_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static UINT msi_dialog_pathedit_control(msi_dialog *dialog, MSIRECORD *rec)
static void MSI_ClosePreview(MSIOBJECTHDR *arg)
static UINT msi_dialog_selection_tree(msi_dialog *dialog, MSIRECORD *rec)
static UINT msi_dialog_set_font(msi_dialog *dialog, HWND hwnd, LPCWSTR name)
static msi_font * msi_dialog_find_font(msi_dialog *dialog, LPCWSTR name)
static void dialog_setfocus(msi_dialog *dialog)
static const struct control_handler msi_dialog_handler[]
static UINT msi_listbox_add_item(MSIRECORD *rec, LPVOID param)
static void msi_dialog_adjust_dialog_pos(msi_dialog *dialog, MSIRECORD *rec, LPRECT pos)
static void msi_dialog_set_checkbox_state(msi_dialog *dialog, msi_control *control, UINT state)
static void msi_seltree_update_feature_installstate(HWND hwnd, HTREEITEM hItem, MSIPACKAGE *package, MSIFEATURE *feature, INSTALLSTATE state)
static msi_control * msi_dialog_add_control(msi_dialog *dialog, MSIRECORD *rec, LPCWSTR szCls, DWORD style)
static UINT msi_dialog_seltree_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static UINT msi_dialog_list_box(msi_dialog *dialog, MSIRECORD *rec)
UINT WINAPI MsiPreviewBillboardW(MSIHANDLE hPreview, const WCHAR *szControlName, const WCHAR *szBillboard)
static UINT msi_dialog_volumeselect_combo(msi_dialog *dialog, MSIRECORD *rec)
static UINT msi_dialog_evaluate_control_conditions(msi_dialog *dialog)
static void dialog_handle_event(msi_dialog *dialog, const WCHAR *control, const WCHAR *attribute, MSIRECORD *rec)
static void free_subscriber(struct subscriber *sub)
static UINT msi_dialog_edit_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static UINT msi_dialog_create_controls(MSIRECORD *rec, LPVOID param)
static UINT msi_dialog_radiogroup_control(msi_dialog *dialog, MSIRECORD *rec)
static void msi_scrolltext_add_text(msi_control *control, LPCWSTR text)
void msi_dialog_unregister_class(void)
static void msi_maskedit_set_text(struct msi_maskedit_info *info, LPCWSTR text)
static UINT msi_dialog_dirlist_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static UINT msi_listview_add_items(msi_dialog *dialog, msi_control *control)
static UINT msi_dialog_get_checkbox_state(msi_dialog *dialog, msi_control *control)
static UINT MSI_PreviewDialogW(MSIPREVIEW *preview, LPCWSTR szDialogName)
static UINT event_new_dialog(msi_dialog *dialog, const WCHAR *argument)
static UINT msi_dialog_directory_list(msi_dialog *dialog, MSIRECORD *rec)
static void msi_dialog_set_tab_order(msi_dialog *dialog, LPCWSTR first)
static void msi_dialog_combobox_update(msi_dialog *dialog, msi_control *control)
static LRESULT msi_dialog_oncommand(msi_dialog *dialog, WPARAM param, HWND hwnd)
static LRESULT msi_dialog_oncreate(HWND hwnd, LPCREATESTRUCTW cs)
static UINT msi_dialog_send_event(msi_dialog *dialog, LPCWSTR event, LPCWSTR arg)
static UINT msi_dialog_maskedit_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT preview_event_handler(msi_dialog *dialog, const WCHAR *event, const WCHAR *argument)
static UINT msi_dialog_directory_combo(msi_dialog *dialog, MSIRECORD *rec)
static BOOL msi_dialog_verify_path(LPWSTR path)
static void process_pending_messages(HWND hdlg)
static void msi_text_on_settext(HWND hWnd)
static WCHAR * msi_get_binary_name(MSIPACKAGE *package, MSIRECORD *rec)
UINT(* control_event_handler)(msi_dialog *, const WCHAR *, const WCHAR *)
static void msi_mask_control_change(struct msi_maskedit_info *info)
static UINT msi_dialog_group_box(msi_dialog *dialog, MSIRECORD *rec)
static LPWSTR msi_dialog_get_uitext(msi_dialog *dialog, LPCWSTR key)
static UINT event_add_source(msi_dialog *dialog, const WCHAR *argument)
static UINT msi_dialog_build_font_list(msi_dialog *dialog)
static LRESULT WINAPI MSIMaskedEdit_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static LRESULT WINAPI MSIListBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT msi_dialog_bitmap_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT msi_dialog_checkbox_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT pending_event_new_dialog(msi_dialog *dialog, const WCHAR *argument)
static LONGLONG msi_vcl_get_cost(msi_dialog *dialog)
static UINT msi_dialog_combobox_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static UINT event_spawn_wait_dialog(msi_dialog *dialog, const WCHAR *argument)
static LRESULT WINAPI MSIScrollText_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT msi_dialog_radiogroup_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static MSIRECORD * msi_get_dialog_record(msi_dialog *dialog)
static LPWSTR msi_dialog_get_style(LPCWSTR p, LPCWSTR *rest)
static void event_cleanup_subscriptions(MSIPACKAGE *package, const WCHAR *dialog)
static UINT pending_event_end_dialog(msi_dialog *dialog, const WCHAR *argument)
static UINT msi_dialog_icon_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT event_validate_product_id(msi_dialog *dialog, const WCHAR *argument)
static BOOL msi_dialog_onkillfocus(msi_dialog *dialog, msi_control *control)
static UINT msi_dialog_volumecost_list(msi_dialog *dialog, MSIRECORD *rec)
static void dialog_map_events(msi_dialog *dialog, const WCHAR *control)
static msi_control * dialog_create_window(msi_dialog *dialog, MSIRECORD *rec, DWORD exstyle, const WCHAR *szCls, const WCHAR *name, const WCHAR *text, DWORD style, HWND parent)
static BOOL CALLBACK msi_radioground_child_enum(HWND hWnd, LPARAM lParam)
void msi_event_fire(MSIPACKAGE *package, const WCHAR *event, MSIRECORD *rec)
INT ACTION_DialogBox(MSIPACKAGE *package, const WCHAR *dialog)
static WCHAR * get_path_property(msi_dialog *dialog, msi_control *control)
static void msi_dialog_end_dialog(msi_dialog *dialog)
static void msi_seltree_create_imagelist(HWND hwnd)
static UINT event_add_local(msi_dialog *dialog, const WCHAR *argument)
static UINT msi_dialog_line_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT msi_dialog_edit_control(msi_dialog *dialog, MSIRECORD *rec)
static void dialog_do_preview(msi_dialog *dialog)
static void msi_dialog_update_pathedit(msi_dialog *dialog, msi_control *control)
static UINT msi_dialog_directorylist_up(msi_dialog *dialog)
static HBITMAP msi_load_picture(MSIDATABASE *db, const WCHAR *name, INT cx, INT cy, DWORD flags)
static UINT msi_listview_add_item(MSIRECORD *rec, LPVOID param)
static MSIFEATURE * msi_seltree_feature_from_item(HWND hwnd, HTREEITEM hItem)
struct msi_font_tag msi_font
static void msi_dialog_set_property(MSIPACKAGE *package, LPCWSTR property, LPCWSTR value)
UINT WINAPI MsiPreviewBillboardA(MSIHANDLE hPreview, const char *szControlName, const char *szBillboard)
static UINT event_set_install_level(msi_dialog *dialog, const WCHAR *argument)
static UINT event_set_target_path(msi_dialog *dialog, const WCHAR *argument)
static const struct control_event control_events[]
static UINT msi_dialog_create_radiobutton(MSIRECORD *rec, LPVOID param)
static UINT msi_dialog_scrolltext_control(msi_dialog *dialog, MSIRECORD *rec)
static void msi_dialog_vsc_add_drives(msi_dialog *dialog, msi_control *control)
static UINT dialog_event_handler(msi_dialog *, const WCHAR *, const WCHAR *)
#define USER_INSTALLSTATE_ALL
static LRESULT msi_seltree_menu(HWND hwnd, HTREEITEM hItem)
static UINT msi_dialog_checkbox_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static LRESULT WINAPI MSIText_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT dialog_run_message_loop(msi_dialog *dialog)
static msi_control * msi_dialog_find_control_by_type(msi_dialog *dialog, LPCWSTR type)
static msi_dialog * dialog_create(MSIPACKAGE *package, const WCHAR *name, msi_dialog *parent, control_event_handler event_handler)
static UINT msi_dialog_hyperlink_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static void msi_maskedit_create_children(struct msi_maskedit_info *info, LPCWSTR font)
static LRESULT msi_dialog_onnotify(msi_dialog *dialog, LPARAM param)
static HWND hMsiHiddenWindow
static msi_control * msi_dialog_find_control_by_hwnd(msi_dialog *dialog, HWND hwnd)
static LRESULT WINAPI MSIHiddenWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT msi_dialog_combo_control(msi_dialog *dialog, MSIRECORD *rec)
static void msi_dialog_vcl_add_columns(msi_dialog *dialog, msi_control *control, MSIRECORD *rec)
UINT(* msi_dialog_control_func)(msi_dialog *dialog, MSIRECORD *rec)
static msi_control * msi_dialog_find_control(msi_dialog *dialog, LPCWSTR name)
static UINT event_reset(msi_dialog *dialog, const WCHAR *argument)
static UINT msi_combobox_add_items(struct msi_combobox_info *info, LPCWSTR property)
static UINT msi_combobox_add_item(MSIRECORD *rec, LPVOID param)
static MSIPREVIEW * MSI_EnableUIPreview(MSIDATABASE *db)
INT ACTION_ShowDialog(MSIPACKAGE *package, const WCHAR *dialog)
static UINT msi_listbox_add_items(struct msi_listbox_info *info, LPCWSTR property)
static UINT msi_dialog_hyperlink(msi_dialog *dialog, MSIRECORD *rec)
static LPWSTR msi_get_window_text(HWND hwnd)
static void msi_seltree_add_child_features(MSIPACKAGE *package, HWND hwnd, LPCWSTR parent, HTREEITEM hParent)
UINT(* event_handler)(msi_dialog *, const WCHAR *)
static UINT msi_dialog_text_control(msi_dialog *dialog, MSIRECORD *rec)
static void msi_dialog_update_controls(msi_dialog *dialog, LPCWSTR property)
static INT msi_dialog_get_sans_serif_height(HWND hwnd)
static LRESULT WINAPI MSIRadioGroup_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static MSIFEATURE * msi_seltree_get_selected_feature(msi_control *control)
static void msi_dialog_vcl_add_drives(msi_dialog *dialog, msi_control *control)
static UINT event_reinstall(msi_dialog *dialog, const WCHAR *argument)
static LRESULT WINAPI MSIComboBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static INT event_do_dialog(MSIPACKAGE *package, const WCHAR *name, msi_dialog *parent, BOOL destroy_modeless)
static UINT msi_dialog_reset(msi_dialog *dialog)
static UINT event_spawn_dialog(msi_dialog *dialog, const WCHAR *argument)
static BOOL msi_mask_editable(WCHAR type)
static UINT pending_event_spawn_dialog(msi_dialog *dialog, const WCHAR *argument)
static void msi_dialog_checkbox_sync_state(msi_dialog *dialog, msi_control *control)
static UINT msi_dialog_control_event(MSIRECORD *rec, LPVOID param)
static UINT msi_dialog_volsel_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static const WCHAR column_keys[][80]
static UINT event_end_dialog(msi_dialog *dialog, const WCHAR *argument)
static void msi_seltree_sync_item_state(HWND hwnd, MSIFEATURE *feature, HTREEITEM hItem)
static UINT msi_dialog_button_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT event_directory_list_up(msi_dialog *dialog, const WCHAR *argument)
static DWORD CALLBACK msi_richedit_stream_in(DWORD_PTR arg, LPBYTE buffer, LONG count, LONG *pcb)
static UINT msi_dialog_listview(msi_dialog *dialog, MSIRECORD *rec)
static LPWSTR msi_dialog_dup_property(msi_dialog *dialog, LPCWSTR property, BOOL indirect)
static LRESULT WINAPI MSIPathEdit_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
UINT WINAPI MsiPreviewDialogA(MSIHANDLE hPreview, LPCSTR szDialogName)
static UINT msi_dialog_progress_bar(msi_dialog *dialog, MSIRECORD *rec)
static UINT event_reinstall_mode(msi_dialog *dialog, const WCHAR *argument)
static HANDLE msi_load_image(MSIDATABASE *db, LPCWSTR name, UINT type, UINT cx, UINT cy, UINT flags)
static void msi_dialog_update_all_controls(msi_dialog *dialog)
static UINT event_directory_list_new(msi_dialog *dialog, const WCHAR *argument)
static VOID msi_mask_next_control(struct msi_maskedit_info *info, HWND hWnd)
static LRESULT WINAPI MSIDialog_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
void(* msi_update)(msi_dialog *, msi_control *)
static LPWSTR msi_get_checkbox_value(msi_dialog *dialog, LPCWSTR prop)
static BOOL str_is_number(LPCWSTR str)
static UINT msi_dialog_directorylist_new(msi_dialog *dialog)
static void msi_dialog_update_directory_combo(msi_dialog *dialog, msi_control *control)
static LRESULT WINAPI MSISelectionTree_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static void msi_destroy_control(msi_control *t)
#define WM_MSI_DIALOG_CREATE
static UINT msi_seltree_popup_menu(HWND hwnd, INT x, INT y)
static UINT map_event(MSIRECORD *row, void *param)
static UINT msi_dialog_add_font(MSIRECORD *rec, LPVOID param)
static UINT msi_dialog_set_property_event(msi_dialog *dialog, LPCWSTR event, LPCWSTR arg)
static struct msi_maskedit_info * msi_dialog_parse_groups(LPCWSTR mask)
static HICON msi_load_icon(MSIDATABASE *db, LPCWSTR text, UINT attributes)
static UINT msi_dialog_fill_controls(msi_dialog *dialog)
static BOOL dialog_register_class(void)
void msi_dialog_destroy(msi_dialog *dialog)
UINT WINAPI MsiEnableUIPreview(MSIHANDLE hdb, MSIHANDLE *phPreview)
void msi_dialog_check_messages(HANDLE handle)
static void msi_dialog_update_directory_list(msi_dialog *dialog, msi_control *control)
static UINT msi_dialog_button_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
static UINT msi_dialog_listbox_handler(msi_dialog *dialog, msi_control *control, WPARAM param)
UINT WINAPI MsiPreviewDialogW(MSIHANDLE hPreview, LPCWSTR szDialogName)
static void event_subscribe(msi_dialog *dialog, const WCHAR *event, const WCHAR *control, const WCHAR *attribute)
void * alloc_msiobject(UINT type, UINT size, msihandledestructor destroy)
MSIHANDLE alloc_msihandle(MSIOBJECTHDR *obj)
void msiobj_addref(MSIOBJECTHDR *info)
int msiobj_release(MSIOBJECTHDR *info)
void * msihandle2msiinfo(MSIHANDLE handle, UINT type)
UINT MSI_SetFeatureStateW(MSIPACKAGE *package, LPCWSTR szFeature, INSTALLSTATE iState)
UINT MSI_SetTargetPathW(MSIPACKAGE *package, LPCWSTR szFolder, LPCWSTR szFolderPath)
void ACTION_UpdateComponentStates(MSIPACKAGE *package, MSIFEATURE *feature)
UINT MSI_GetFeatureCost(MSIPACKAGE *package, MSIFEATURE *feature, MSICOSTTREE tree, INSTALLSTATE state, LPINT cost)
UINT MSI_SetInstallLevel(MSIPACKAGE *package, int iInstallLevel)
HRESULT WINAPI OleLoadPicture(LPSTREAM lpstream, LONG lSize, BOOL fRunmode, REFIID riid, LPVOID *ppvObj)
void WINAPI PathStripPathW(LPWSTR lpszPath)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
LPWSTR WINAPI PathRemoveBackslashW(LPWSTR lpszPath)
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
#define FILE_READ_ONLY_VOLUME
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLdouble GLdouble GLdouble GLdouble q
GLenum GLuint GLint GLenum face
GLenum GLuint GLenum GLsizei const GLchar * buf
const GLuint GLenum const GLvoid * binary
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 * u
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 LPSTR strdupWtoA(LPCWSTR str)
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
INTERNETFEATURELIST feature
static const char * control_type(DWORD dwControlType)
@ INSTALLMESSAGE_ACTIONSTART
@ INSTALLMESSAGE_SHOWDIALOG
@ INSTALLSTATE_ADVERTISED
@ msidbDialogAttributesModal
@ msidbDialogAttributesVisible
@ msidbDialogAttributesMinimize
@ msidbTextStyleStyleBitsBold
@ msidbTextStyleStyleBitsUnderline
@ msidbTextStyleStyleBitsItalic
@ msidbTextStyleStyleBitsStrike
@ msidbControlAttributesSorted
@ msidbControlAttributesProgress95
@ msidbControlAttributesSunken
@ msidbControlAttributesIndirect
@ msidbControlAttributesIconSize32
@ msidbControlAttributesBitmap
@ msidbControlAttributesIconSize16
@ msidbControlAttributesComboList
@ msidbControlAttributesEnabled
@ msidbControlAttributesIcon
@ msidbControlAttributesTransparent
@ msidbControlAttributesFixedSize
@ msidbControlAttributesVisible
@ msidbControlAttributesHasBorder
static void * msi_realloc(void *mem, size_t len) __WINE_ALLOC_SIZE(2)
UINT msi_set_property(MSIDATABASE *, const WCHAR *, const WCHAR *, int) DECLSPEC_HIDDEN
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...) DECLSPEC_HIDDEN
static void * msi_alloc_zero(size_t len) __WINE_ALLOC_SIZE(1)
#define MSIHANDLETYPE_DATABASE
UINT MSI_RecordGetIStream(MSIRECORD *, UINT, IStream **) DECLSPEC_HIDDEN
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID) DECLSPEC_HIDDEN
static void msi_free(void *mem)
#define MSIHANDLETYPE_PREVIEW
int MSI_RecordGetInteger(MSIRECORD *, UINT) DECLSPEC_HIDDEN
UINT msi_get_property(MSIDATABASE *, LPCWSTR, LPWSTR, LPDWORD) DECLSPEC_HIDDEN
UINT MSI_RecordStreamToFile(MSIRECORD *, UINT, LPCWSTR) DECLSPEC_HIDDEN
void msi_reset_source_folders(MSIPACKAGE *package) DECLSPEC_HIDDEN
BOOL TABLE_Exists(MSIDATABASE *db, LPCWSTR name) DECLSPEC_HIDDEN
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int) DECLSPEC_HIDDEN
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT) DECLSPEC_HIDDEN
MSICONDITION MSI_EvaluateConditionW(MSIPACKAGE *, LPCWSTR) DECLSPEC_HIDDEN
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *) DECLSPEC_HIDDEN
static void * msi_alloc(size_t len) __WINE_ALLOC_SIZE(1)
MSIRECORD * MSI_CreateRecord(UINT) DECLSPEC_HIDDEN
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def) DECLSPEC_HIDDEN
LPWSTR msi_dup_property(MSIDATABASE *db, LPCWSTR prop) DECLSPEC_HIDDEN
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...) DECLSPEC_HIDDEN
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR) DECLSPEC_HIDDEN
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
#define FILE_ATTRIBUTE_DIRECTORY
#define PathAddBackslashW
#define BS_AUTORADIOBUTTON
#define WS_EX_TRANSPARENT
#define LVM_DELETEALLITEMS
_Out_opt_ int _Out_opt_ int * cy
#define LVS_SHAREIMAGELISTS
#define LVS_NOCOLUMNHEADER
#define LVS_EX_TWOCLICKACTIVATE
#define LVS_SHOWSELALWAYS
struct tagNMTREEVIEWW * LPNMTREEVIEWW
struct _TREEITEM * HTREEITEM
#define LVS_SORTASCENDING
#define LVM_ENSUREVISIBLE
#define TVHT_ONITEMSTATEICON
#define LVN_ENDLABELEDITW
#define TVIS_STATEIMAGEMASK
#define LVM_INSERTCOLUMNW
#define ImageList_AddIcon(himl, hicon)
#define INDEXTOSTATEIMAGEMASK(i)
#define LVM_SETEXTENDEDLISTVIEWSTYLE
static unsigned __int64 next
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
__WINE_SERVER_LIST_INLINE void list_move_head(struct list *dst, struct list *src)
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
WCHAR lfFaceName[LF_FACESIZE]
msi_dialog_control_func func
control_event_handler event_handler
event_handler pending_event
struct list subscriptions
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#define FIELD_OFFSET(t, f)
#define INVALID_FILE_ATTRIBUTES
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetCurrentThreadId(void)
#define ERROR_FUNCTION_FAILED
BOOL WINAPI GetTextMetricsW(_In_ HDC, _Out_ LPTEXTMETRICW)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HWND WINAPI GetFocus(void)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define WM_CTLCOLORSTATIC
HMENU WINAPI CreatePopupMenu(void)
#define GetWindowLongPtrW
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI IsDialogMessageW(_In_ HWND, _In_ LPMSG)
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WS_EX_RIGHTSCROLLBAR
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 SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define WS_EX_CONTROLPARENT
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
HWND WINAPI GetNextDlgTabItem(_In_ HWND, _In_opt_ HWND, _In_ BOOL)
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
DWORD WINAPI MsgWaitForMultipleObjects(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask)
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
DWORD WINAPI MsgWaitForMultipleObjectsEx(_In_ DWORD nCount, _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ DWORD dwMilliseconds, _In_ DWORD dwWakeMask, _In_ DWORD dwFlags)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
struct tagNMHDR * LPNMHDR
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HDC WINAPI GetDC(_In_opt_ HWND)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI AppendMenuA(_In_ HMENU, _In_ UINT, _In_ UINT_PTR, _In_opt_ LPCSTR)
HWND WINAPI GetParent(_In_ HWND)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
BOOL WINAPI DestroyMenu(_In_ HMENU)
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define SWP_NOOWNERZORDER
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI InvalidateRect(_In_opt_ HWND, _In_opt_ LPCRECT, _In_ BOOL)
#define MAKEINTRESOURCEW(i)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
HBITMAP WINAPI LoadBitmapW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define SetWindowLongPtrW
LRESULT WINAPI CallWindowProcW(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SWP_NOSENDCHANGING
BOOL WINAPI DestroyWindow(_In_ HWND)
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI DestroyIcon(_In_ HICON)