126#define WM_MSI_DIALOG_CREATE (WM_USER+0x100)
127#define WM_MSI_DIALOG_DESTROY (WM_USER+0x101)
129#define USER_INSTALLSTATE_ALL 0x1000
247 if( *
p !=
'\\' && *
p !=
'&' )
251 for(
i=++
p;
i<
q;
i++ )
252 if( *
i ==
'}' || *
i ==
'\\' )
287 memset( &lf, 0,
sizeof lf );
427 TRACE(
"Dialog %s control %s hwnd %p\n",
444 if (!rec)
return NULL;
484 flags &= ~LR_DEFAULTSIZE;
534 memset( &tvi, 0,
sizeof tvi );
570 if (text_fmt)
text = text_fmt;
587 TRACE(
"progress: func %lu val1 %lu val2 %lu\n",
func, val1, val2 );
604 ctrl->progress_current = 0;
610 if (val2)
dialog->package->action_progress_increment = val1;
611 else dialog->package->action_progress_increment = 0;
614 if (
ctrl->progress_backwards)
617 else ctrl->progress_current = 0;
622 else ctrl->progress_current =
ctrl->progress_max;
630 FIXME(
"unknown progress message %lu\n",
func );
668 TRACE(
"already subscribed\n");
672 if (!(sub =
malloc(
sizeof(*sub) )))
return;
706 L"SELECT * FROM `EventMapping` WHERE `Dialog_` = '%s' AND `Control_` = '%s'",
845 while (*
p && *
p !=
'{')
p++;
846 if (!*
p++)
return text;
848 while (*
p && *
p !=
'}')
p++;
849 if (!*
p++)
return text;
865 if (
p && (
p[1] == 0 ||
p[1] ==
' '))
873 else ERR(
"Badly formatted property string - what happens?\n");
924 L"SELECT * FROM `ControlEvent` WHERE `Dialog_` = '%s' AND `Control_` = '%s' ORDER BY `Ordering`",
928 ERR(
"query failed\n");
935 if (
dialog->pending_event)
948 HBITMAP hOleBitmap = 0,
hBitmap = 0, hOldSrcBitmap, hOldDestBitmap;
966 IStream_Release( stm );
969 ERR(
"failed to load picture\n");
973 r = IPicture_get_Handle( pic, (OLE_HANDLE *)&hOleBitmap );
976 ERR(
"failed to get bitmap handle\n");
984 ERR(
"failed to get bitmap size\n");
999 StretchBlt( destdc, 0, 0,
cx,
cy, srcdc, 0, 0, bm.bmWidth, bm.bmHeight,
SRCCOPY );
1006 if (pic) IPicture_Release( pic );
1099 return state[0] ? 1 : 0;
1378 for (
j = 0;
j <
info->num_items;
j++)
1402 info->addpos_items++;
1414 L"SELECT * FROM `ComboBox` WHERE `Property` = '%s' ORDER BY `Order`",
property );
1525 for (
j = 0;
j <
info->num_items;
j++)
1582 info->addpos_items = 0;
1612#define MAX_NUM_DIGITS 11
1654#define MASK_MAX_GROUPS 20
1696 for(
i=0,
n=0;
i<
info->num_groups;
i++ )
1698 if (
info->group[
i].len == ~0
u)
1706 if (
info->group[
i].len +
n >
info->num_chars)
1708 ERR(
"can't fit control %d text into template\n",
i);
1713 for(
r=0;
r<
info->group[
i].len;
r++)
1720 if(
r !=
info->group[
i].len )
1727 TRACE(
"%d/%d controls were good\n",
i,
info->num_groups);
1729 if(
i ==
info->num_groups )
1744 for(
i=0;
i<
info->num_groups;
i++ )
1749 if(
i >= (
info->num_groups-1) )
1797 for(
i = 0;
i <
info->num_groups;
i++ )
1839 if(
p[0] == 0 ||
p[0] ==
'>' )
1844 info->group[0].type =
'&';
1845 info->group[0].len = ~0
u;
1852 for(
n=0;
p[
n] ==
p[0];
n++ )
1855 info->group[
i].type =
p[0];
1871 info->num_groups =
i;
1890 for(
i = 0;
i <
info->num_groups;
i++ )
1894 if (
info->num_chars)
1908 ERR(
"failed to create mask edit sub window\n");
1938 WARN(
"mask template is empty\n");
1954 ERR(
"Failed to create maskedit container\n");
2168 group->parent->hwnd );
2247 r =
MSI_OpenQuery( package->db, &
view,
L"SELECT * FROM `RadioButton` WHERE `Property` = '%s'", prop );
2250 ERR(
"query failed for dialog %s radio group %s\n",
2344 package = info->dialog->package;
2349 ERR(
"item %p feature was NULL\n",
hItem);
2438 memset( &tvis, 0,
sizeof tvis );
2457 if (
feature->Display % 2 != 0 )
2463 info->selected = hfirst;
2468 const int bm_width = 32, bm_height = 16, bm_count = 3;
2469 const int bm_resource = 0x1001;
2477 ERR(
"failed to create image list\n");
2481 for (
i=0;
i<bm_count;
i++)
2486 ERR(
"failed to load bitmap %d\n",
i);
2647 for (
j = 0;
j <
info->num_items;
j++)
2671 info->addpos_items++;
2682 L"SELECT * FROM `ListBox` WHERE `Property` = '%s' ORDER BY `Order`",
property );
2753 info->addpos_items = 0;
2836 if ( !
wcscmp( wfd.cFileName,
L"." ) || !
wcscmp( wfd.cFileName,
L".." ) )
2843 item.pszText = wfd.cFileName;
2942 switch (nmhdr->
code)
2958 ERR(
"no list-view item selected\n");
3043 L"VolumeCostVolume",
3045 L"VolumeCostAvailable",
3046 L"VolumeCostRequired",
3047 L"VolumeCostDifference",
3088 FIXME(
"Style prefix not supported\n");
3103 free( lvc.pszText );
3119 total_cost += each_cost;
3124 total_cost -= each_cost;
3149 if ( !
size )
return;
3152 if ( !drives )
return;
3178 difference =
unused.QuadPart - cost;
3181 lvitem.iSubItem = 1;
3182 lvitem.pszText = size_text;
3183 lvitem.cchTextMax =
lstrlenW(size_text) + 1;
3187 lvitem.iSubItem = 2;
3188 lvitem.pszText = size_text;
3189 lvitem.cchTextMax =
lstrlenW(size_text) + 1;
3192 lvitem.iSubItem = 3;
3193 lvitem.pszText = cost_text;
3194 lvitem.cchTextMax =
lstrlenW(cost_text) + 1;
3198 lvitem.iSubItem = 4;
3199 lvitem.pszText = size_text;
3200 lvitem.cchTextMax =
lstrlenW(size_text) + 1;
3243 ERR(
"No ComboBox item selected!\n");
3264 if ( !
size )
return;
3267 if ( !drives )
return;
3319 while (*
p && *
p !=
'<')
p++;
3332 if (*
p ==
'\"' || *
p ==
'\'')
quote = *
p++;
3370 else item.szUrl[0] = 0;
3424 if (
MSI_OpenQuery(
dialog->package->db, &
view,
L"SELECT * FROM `ListView` WHERE `Property` = '%s' ORDER BY `Order`",
3559 memset( &lf, 0,
sizeof lf );
3611 center.
x =
MulDiv( center.
x, xres, 100 );
3612 center.
y =
MulDiv( center.
y, yres, 100 );
3615 if (
dialog->package->center_x &&
dialog->package->center_y)
3617 pos->left =
dialog->package->center_x - sz.
cx / 2.0;
3619 pos->top =
dialog->package->center_y - sz.
cy / 2.0;
3624 pos->left = center.
x - sz.
cx/2;
3626 pos->top = center.
y - sz.
cy/2;
3630 dialog->package->center_x = center.
x;
3631 dialog->package->center_y = center.
y;
3645 struct list tab_chain;
3699 if (!
dialog->default_font)
3702 if (!
dialog->default_font)
3871 while( !
dialog->finished )
3948 dialog->package = package;
3949 dialog->event_handler = event_handler;
4029 dialog->attributes &= ~msidbDialogAttributesModal;
4130 package = MSI_CreatePackage( db );
4150 TRACE(
"%lu %p\n", hdb, phPreview );
4261 if (destroy_modeless && package->
dialog)
4287 if (!
wcscmp( argument,
L"Exit" ))
4289 else if (!
wcscmp( argument,
L"Retry" ))
4291 else if (!
wcscmp( argument,
L"Ignore" ))
4293 else if (!
wcscmp( argument,
L"Return" ))
4359 FIXME(
"doing nothing\n");
4462 if (!
row)
return -1;
4467 if (rc == -2) rc = 0;
4472 if (!
row)
return -1;
4486 if (package->
next_dialog)
ERR(
"Already got next dialog... ignoring it\n");
4510 TRACE(
"setting install level to %d\n",
level);
static const char * wine_dbgstr_rect(const RECT *prc)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
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 WCHAR * get_checkbox_value(msi_dialog *dialog, const WCHAR *prop)
static UINT event_do_action(msi_dialog *dialog, const WCHAR *argument)
static UINT event_remove(msi_dialog *dialog, const WCHAR *argument)
static UINT dialog_set_control_condition(MSIRECORD *rec, void *param)
#define WM_MSI_DIALOG_DESTROY
void msi_event_cleanup_all_subscriptions(MSIPACKAGE *package)
static struct control * dialog_find_control_by_type(msi_dialog *dialog, const WCHAR *type)
static WCHAR * get_unique_folder_name(const WCHAR *root, int *ret_len)
static void dialog_set_property(MSIPACKAGE *package, const WCHAR *property, const WCHAR *value)
static void MSI_ClosePreview(MSIOBJECTHDR *arg)
static HANDLE load_image(MSIDATABASE *db, const WCHAR *name, UINT type, UINT cx, UINT cy, UINT flags)
static UINT dialog_directorylist_up(msi_dialog *dialog)
static void dialog_update_directory_combo(msi_dialog *dialog, struct control *control)
static void dialog_setfocus(msi_dialog *dialog)
static const struct control_handler msi_dialog_handler[]
static void destroy_control(struct control *t)
static UINT dialog_line_control(msi_dialog *dialog, MSIRECORD *rec)
static void mask_next_control(struct msi_maskedit_info *info, HWND hWnd)
static UINT dialog_button_control(msi_dialog *dialog, MSIRECORD *rec)
static WCHAR * dialog_get_uitext(msi_dialog *dialog, const WCHAR *key)
UINT WINAPI MsiPreviewBillboardW(MSIHANDLE hPreview, const WCHAR *szControlName, const WCHAR *szBillboard)
static UINT dialog_listview(msi_dialog *dialog, MSIRECORD *rec)
static void dialog_handle_event(msi_dialog *dialog, const WCHAR *control, const WCHAR *attribute, MSIRECORD *rec)
static void free_subscriber(struct subscriber *sub)
static INT dialog_get_sans_serif_height(HWND hwnd)
static void dialog_update_directory_list(msi_dialog *dialog, struct control *control)
static void seltree_update_feature_installstate(HWND hwnd, HTREEITEM hItem, MSIPACKAGE *package, MSIFEATURE *feature, INSTALLSTATE state)
static struct control * dialog_find_control_by_hwnd(msi_dialog *dialog, HWND hwnd)
static LRESULT seltree_menu(HWND hwnd, HTREEITEM hItem)
void msi_dialog_unregister_class(void)
static struct msi_maskedit_info * dialog_parse_groups(const WCHAR *mask)
static UINT dialog_evaluate_control_conditions(msi_dialog *dialog)
static UINT dialog_hyperlink_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static void dialog_checkbox_sync_state(msi_dialog *dialog, struct control *control)
static BOOL mask_editable(WCHAR type)
static DWORD CALLBACK richedit_stream_in(DWORD_PTR arg, BYTE *buffer, LONG count, LONG *pcb)
static UINT listbox_add_item(MSIRECORD *rec, void *param)
static UINT dialog_listbox_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static UINT MSI_PreviewDialogW(MSIPREVIEW *preview, LPCWSTR szDialogName)
static UINT event_new_dialog(msi_dialog *dialog, const WCHAR *argument)
static UINT dialog_set_font(msi_dialog *dialog, HWND hwnd, const WCHAR *name)
static WCHAR * get_window_text(HWND hwnd)
static UINT dialog_icon_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT dialog_scrolltext_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT preview_event_handler(msi_dialog *dialog, const WCHAR *event, const WCHAR *argument)
static LRESULT dialog_oncommand(msi_dialog *dialog, WPARAM param, HWND hwnd)
static void process_pending_messages(HWND hdlg)
static UINT event_add_source(msi_dialog *dialog, const WCHAR *argument)
static UINT dialog_listview_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static UINT dialog_radiogroup_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT dialog_directorylist_new(msi_dialog *dialog)
static UINT dialog_hyperlink(msi_dialog *dialog, MSIRECORD *rec)
static void seltree_sync_item_state(HWND hwnd, MSIFEATURE *feature, HTREEITEM hItem)
static LRESULT WINAPI MSIMaskedEdit_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT dialog_radiogroup_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static UINT dialog_set_property_event(msi_dialog *dialog, const WCHAR *event, const WCHAR *arg)
static void dialog_combobox_update(msi_dialog *dialog, struct control *control)
static LRESULT WINAPI MSIListBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT pending_event_new_dialog(msi_dialog *dialog, const WCHAR *argument)
static void scrolltext_add_text(struct control *control, const WCHAR *text)
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 dialog_checkbox_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static void event_cleanup_subscriptions(MSIPACKAGE *package, const WCHAR *dialog)
static UINT pending_event_end_dialog(msi_dialog *dialog, const WCHAR *argument)
static HBITMAP load_picture(MSIDATABASE *db, const WCHAR *name, INT cx, INT cy, DWORD flags)
static UINT event_validate_product_id(msi_dialog *dialog, const WCHAR *argument)
static void seltree_create_imagelist(HWND hwnd)
static void dialog_map_events(msi_dialog *dialog, const WCHAR *control)
static struct 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 UINT dialog_edit_handler(msi_dialog *dialog, struct control *control, WPARAM param)
void msi_event_fire(MSIPACKAGE *package, const WCHAR *event, MSIRECORD *rec)
INT ACTION_DialogBox(MSIPACKAGE *package, const WCHAR *dialog)
static UINT dialog_edit_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT dialog_add_font(MSIRECORD *rec, void *param)
static UINT event_add_local(msi_dialog *dialog, const WCHAR *argument)
static void dialog_do_preview(msi_dialog *dialog)
static UINT dialog_control_event(MSIRECORD *rec, void *param)
static WCHAR * dialog_get_style(const WCHAR *p, const WCHAR **rest)
static WCHAR * get_path_property(msi_dialog *dialog, struct control *control)
UINT WINAPI MsiPreviewBillboardA(MSIHANDLE hPreview, const char *szControlName, const char *szBillboard)
static void dialog_set_tab_order(msi_dialog *dialog, const WCHAR *first)
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 void dialog_set_checkbox_state(msi_dialog *dialog, struct control *control, UINT state)
static UINT dialog_event_handler(msi_dialog *, const WCHAR *, const WCHAR *)
#define USER_INSTALLSTATE_ALL
static UINT dialog_progress_bar(msi_dialog *dialog, MSIRECORD *rec)
static UINT dialog_group_box(msi_dialog *dialog, MSIRECORD *rec)
static UINT dialog_button_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static struct control * dialog_find_control(msi_dialog *dialog, const WCHAR *name)
static LRESULT WINAPI MSIText_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT dialog_run_message_loop(msi_dialog *dialog)
static void dialog_vcl_add_drives(msi_dialog *dialog, struct control *control)
static UINT dialog_create_radiobutton(MSIRECORD *rec, void *param)
static UINT listbox_add_items(struct msi_listbox_info *info, const WCHAR *property)
static HWND hMsiHiddenWindow
static struct control * dialog_add_control(msi_dialog *dialog, MSIRECORD *rec, const WCHAR *szCls, DWORD style)
static LRESULT WINAPI MSIHiddenWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT dialog_list_box(msi_dialog *dialog, MSIRECORD *rec)
static void maskedit_set_text(struct msi_maskedit_info *info, const WCHAR *text)
static UINT dialog_build_font_list(msi_dialog *dialog)
static LRESULT dialog_onnotify(msi_dialog *dialog, LPARAM param)
static UINT event_reset(msi_dialog *dialog, const WCHAR *argument)
static UINT seltree_popup_menu(HWND hwnd, INT x, INT y)
static msi_dialog * dialog_create(MSIPACKAGE *package, const WCHAR *name, msi_dialog *parent, UINT(*event_handler)(msi_dialog *, const WCHAR *, const WCHAR *))
static MSIPREVIEW * MSI_EnableUIPreview(MSIDATABASE *db)
INT ACTION_ShowDialog(MSIPACKAGE *package, const WCHAR *dialog)
static void dialog_vsc_add_drives(msi_dialog *dialog, struct control *control)
static UINT dialog_maskedit_control(msi_dialog *dialog, MSIRECORD *rec)
static HICON load_icon(MSIDATABASE *db, const WCHAR *text, UINT attributes)
static UINT listview_add_items(msi_dialog *dialog, struct control *control)
static void dialog_update_controls(msi_dialog *dialog, const WCHAR *property)
static LRESULT WINAPI MSIRadioGroup_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static INT dialog_scale_unit(msi_dialog *dialog, INT val)
static UINT dialog_text_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT event_reinstall(msi_dialog *dialog, const WCHAR *argument)
static LRESULT WINAPI MSIComboBox_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT dialog_combo_control(msi_dialog *dialog, MSIRECORD *rec)
static void dialog_adjust_dialog_pos(msi_dialog *dialog, MSIRECORD *rec, RECT *pos)
static INT event_do_dialog(MSIPACKAGE *package, const WCHAR *name, msi_dialog *parent, BOOL destroy_modeless)
static BOOL dialog_verify_path(const WCHAR *path)
static UINT event_spawn_dialog(msi_dialog *dialog, const WCHAR *argument)
static UINT pending_event_spawn_dialog(msi_dialog *dialog, const WCHAR *argument)
static UINT dialog_selection_tree(msi_dialog *dialog, MSIRECORD *rec)
static const WCHAR column_keys[][80]
static UINT event_end_dialog(msi_dialog *dialog, const WCHAR *argument)
static WCHAR * dialog_dup_property(msi_dialog *dialog, const WCHAR *property, BOOL indirect)
static UINT dialog_checkbox_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT dialog_volsel_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static UINT event_directory_list_up(msi_dialog *dialog, const WCHAR *argument)
static BOOL dialog_onkillfocus(msi_dialog *dialog, struct control *control)
static void seltree_add_child_features(MSIPACKAGE *package, HWND hwnd, const WCHAR *parent, HTREEITEM hParent)
static UINT dialog_dirlist_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static LRESULT WINAPI MSIPathEdit_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
UINT WINAPI MsiPreviewDialogA(MSIHANDLE hPreview, LPCSTR szDialogName)
static UINT event_reinstall_mode(msi_dialog *dialog, const WCHAR *argument)
static UINT dialog_volumecost_list(msi_dialog *dialog, MSIRECORD *rec)
static UINT event_directory_list_new(msi_dialog *dialog, const WCHAR *argument)
static LRESULT WINAPI MSIDialog_WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
static UINT dialog_directory_list(msi_dialog *dialog, MSIRECORD *rec)
static BOOL str_is_number(LPCWSTR str)
static UINT dialog_get_checkbox_state(msi_dialog *dialog, struct control *control)
static LRESULT dialog_oncreate(HWND hwnd, CREATESTRUCTW *cs)
static LONGLONG vcl_get_cost(msi_dialog *dialog)
static WCHAR * get_deformatted_field(MSIPACKAGE *package, MSIRECORD *rec, int field)
static void dialog_end_dialog(msi_dialog *dialog)
static MSIFEATURE * seltree_get_selected_feature(struct control *control)
static struct font * dialog_find_font(msi_dialog *dialog, const WCHAR *name)
static LRESULT WINAPI MSISelectionTree_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
#define WM_MSI_DIALOG_CREATE
static UINT dialog_pathedit_control(msi_dialog *dialog, MSIRECORD *rec)
static UINT combobox_add_items(struct msi_combobox_info *info, const WCHAR *property)
static void dialog_update_pathedit(msi_dialog *dialog, struct control *control)
static void mask_control_change(struct msi_maskedit_info *info)
static MSIFEATURE * seltree_feature_from_item(HWND hwnd, HTREEITEM hItem)
static UINT listview_add_item(MSIRECORD *rec, void *param)
static UINT dialog_directory_combo(msi_dialog *dialog, MSIRECORD *rec)
static UINT map_event(MSIRECORD *row, void *param)
static WCHAR * get_binary_name(MSIPACKAGE *package, MSIRECORD *rec)
static void maskedit_create_children(struct msi_maskedit_info *info, const WCHAR *font)
static UINT dialog_reset(msi_dialog *dialog)
static UINT combobox_add_item(MSIRECORD *rec, void *param)
static UINT dialog_volumeselect_combo(msi_dialog *dialog, MSIRECORD *rec)
static BOOL dialog_register_class(void)
static BOOL CALLBACK radioground_child_enum(HWND hWnd, LPARAM lParam)
void msi_dialog_destroy(msi_dialog *dialog)
static UINT dialog_fill_controls(msi_dialog *dialog)
UINT WINAPI MsiEnableUIPreview(MSIHANDLE hdb, MSIHANDLE *phPreview)
static UINT dialog_bitmap_control(msi_dialog *dialog, MSIRECORD *rec)
static void dialog_update_all_controls(msi_dialog *dialog)
void msi_dialog_check_messages(HANDLE handle)
static UINT dialog_create_controls(MSIRECORD *rec, void *param)
static MSIRECORD * get_dialog_record(msi_dialog *dialog)
static void seltree_update_siblings_and_children_installstate(HWND hwnd, HTREEITEM curr, MSIPACKAGE *package, INSTALLSTATE state)
static void dialog_vcl_add_columns(msi_dialog *dialog, struct control *control, MSIRECORD *rec)
static UINT dialog_send_event(msi_dialog *dialog, const WCHAR *event, const WCHAR *arg)
static UINT dialog_combobox_handler(msi_dialog *dialog, struct control *control, WPARAM param)
static void text_on_settext(HWND hWnd)
static UINT dialog_seltree_handler(msi_dialog *dialog, struct 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 count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
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)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
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
int MSI_RecordGetInteger(MSIRECORD *, UINT)
UINT MSI_RecordGetIStream(MSIRECORD *, UINT, IStream **)
#define MSIHANDLETYPE_DATABASE
void msi_reset_source_folders(MSIPACKAGE *package)
BOOL TABLE_Exists(MSIDATABASE *db, LPCWSTR name)
UINT MSI_RecordSetInteger(MSIRECORD *, UINT, int)
#define MSIHANDLETYPE_PREVIEW
int msi_get_property_int(MSIDATABASE *package, LPCWSTR prop, int def)
MSICONDITION MSI_EvaluateConditionW(MSIPACKAGE *, LPCWSTR)
const WCHAR * MSI_RecordGetString(const MSIRECORD *, UINT)
UINT WINAPIV MSI_OpenQuery(MSIDATABASE *, MSIQUERY **, LPCWSTR,...)
UINT msi_set_property(MSIDATABASE *, const WCHAR *, const WCHAR *, int)
MSIRECORD *WINAPIV MSI_QueryGetRecord(MSIDATABASE *db, LPCWSTR query,...)
UINT msi_get_property(MSIDATABASE *, LPCWSTR, LPWSTR, LPDWORD)
UINT MSI_RecordStreamToFile(MSIRECORD *, UINT, LPCWSTR)
WCHAR * msi_dup_property(MSIDATABASE *db, const WCHAR *prop)
INT MSI_ProcessMessage(MSIPACKAGE *, INSTALLMESSAGE, MSIRECORD *)
UINT MSI_RecordSetStringW(MSIRECORD *, UINT, LPCWSTR)
MSIRECORD * MSI_CreateRecord(UINT)
UINT MSI_IterateRecords(MSIQUERY *, LPDWORD, record_func, LPVOID)
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
#define offsetof(TYPE, MEMBER)
_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)
_Check_return_ _CRTIMP wchar_t *__cdecl wcsdup(_In_z_ const wchar_t *_Str)
#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]
UINT(* handler)(msi_dialog *, const WCHAR *)
void(* update)(msi_dialog *, struct control *)
UINT(* handler)(msi_dialog *, struct control *, WPARAM)
UINT(* pending_event)(msi_dialog *, const WCHAR *)
UINT(* event_handler)(msi_dialog *, const WCHAR *, const WCHAR *)
struct list subscriptions
TW_UINT32 TW_UINT16 TW_UINT16 MSG
#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)