mirror of
https://github.com/pbatard/rufus.git
synced 2025-05-25 12:14:33 -04:00
[ui] extend SelectionDialog() to support checkbox selection
This commit is contained in:
parent
a9a97b6f10
commit
9690742d91
7 changed files with 57 additions and 61 deletions
17
src/format.c
17
src/format.c
|
@ -1268,11 +1268,11 @@ int SetWinToGoIndex(void)
|
||||||
if (img_report.wininst_index > 1) {
|
if (img_report.wininst_index > 1) {
|
||||||
for (i = 0; i < img_report.wininst_index; i++)
|
for (i = 0; i < img_report.wininst_index; i++)
|
||||||
install_names[i] = &img_report.wininst_path[i][2];
|
install_names[i] = &img_report.wininst_path[i][2];
|
||||||
wininst_index = SelectionDialog(lmprintf(MSG_130), lmprintf(MSG_131), install_names, img_report.wininst_index);
|
wininst_index = _log2(SelectionDialog(BS_AUTORADIOBUTTON, lmprintf(MSG_130),
|
||||||
|
lmprintf(MSG_131), install_names, img_report.wininst_index, 1));
|
||||||
if (wininst_index < 0)
|
if (wininst_index < 0)
|
||||||
return -2;
|
return -2;
|
||||||
wininst_index--;
|
if (wininst_index >= MAX_WININST)
|
||||||
if ((wininst_index < 0) || (wininst_index >= MAX_WININST))
|
|
||||||
wininst_index = 0;
|
wininst_index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1323,14 +1323,15 @@ int SetWinToGoIndex(void)
|
||||||
uprintf("Warning: Nonstandard Windows image (missing <DISPLAYNAME> entries)");
|
uprintf("Warning: Nonstandard Windows image (missing <DISPLAYNAME> entries)");
|
||||||
|
|
||||||
if (i > 1)
|
if (i > 1)
|
||||||
i = SelectionDialog(lmprintf(MSG_291), lmprintf(MSG_292), version_name.String, i);
|
// NB: _log2 returns -2 if SelectionDialog() returns negative (user cancelled)
|
||||||
if (i < 0) {
|
i = _log2(SelectionDialog(BS_AUTORADIOBUTTON,
|
||||||
|
lmprintf(MSG_291), lmprintf(MSG_292), version_name.String, i, 1)) + 1;
|
||||||
|
if (i < 0)
|
||||||
wintogo_index = -2; // Cancelled by the user
|
wintogo_index = -2; // Cancelled by the user
|
||||||
} else if (i == 0) {
|
else if (i == 0)
|
||||||
wintogo_index = 1;
|
wintogo_index = 1;
|
||||||
} else {
|
else
|
||||||
wintogo_index = atoi(version_index.String[i - 1]);
|
wintogo_index = atoi(version_index.String[i - 1]);
|
||||||
}
|
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
// Get the build version
|
// Get the build version
|
||||||
build = get_token_data_file_indexed("BUILD", xml_file, i);
|
build = get_token_data_file_indexed("BUILD", xml_file, i);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Constants and defines missing from various toolchains
|
* Constants and defines missing from various toolchains
|
||||||
* Copyright © 2016-2017 Pete Batard <pete@akeo.ie>
|
* Copyright © 2016-2022 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -105,6 +105,16 @@ static __inline void *_reallocf(void *ptr, size_t size) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __inline int _log2(register int val)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
if (val < 0)
|
||||||
|
return -2;
|
||||||
|
while (val >>= 1)
|
||||||
|
ret++;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Why oh why does Microsoft have to make everybody suffer with their braindead use of Unicode? */
|
/* Why oh why does Microsoft have to make everybody suffer with their braindead use of Unicode? */
|
||||||
#define _RT_ICON MAKEINTRESOURCEA(3)
|
#define _RT_ICON MAKEINTRESOURCEA(3)
|
||||||
#define _RT_DIALOG MAKEINTRESOURCEA(5)
|
#define _RT_DIALOG MAKEINTRESOURCEA(5)
|
||||||
|
|
|
@ -31,27 +31,6 @@
|
||||||
#define IDI_LOG_32 144
|
#define IDI_LOG_32 144
|
||||||
#define IDI_SAVE_32 145
|
#define IDI_SAVE_32 145
|
||||||
#define IDI_HASH_32 146
|
#define IDI_HASH_32 146
|
||||||
#define IDD_DIALOG_XP 151
|
|
||||||
#define IDD_ABOUTBOX_XP 152
|
|
||||||
#define IDD_NOTIFICATION_XP 153
|
|
||||||
#define IDD_LICENSE_XP 154
|
|
||||||
#define IDD_LOG_XP 155
|
|
||||||
#define IDD_UPDATE_POLICY_XP 156
|
|
||||||
#define IDD_NEW_VERSION_XP 157
|
|
||||||
#define IDD_DIALOG_RTL 201
|
|
||||||
#define IDD_ABOUTBOX_RTL 202
|
|
||||||
#define IDD_NOTIFICATION_RTL 203
|
|
||||||
#define IDD_LICENSE_RTL 204
|
|
||||||
#define IDD_LOG_RTL 205
|
|
||||||
#define IDD_UPDATE_POLICY_RTL 206
|
|
||||||
#define IDD_NEW_VERSION_RTL 207
|
|
||||||
#define IDD_DIALOG_RTL_XP 251
|
|
||||||
#define IDD_ABOUTBOX_RTL_XP 252
|
|
||||||
#define IDD_NOTIFICATION_RTL_XP 253
|
|
||||||
#define IDD_LICENSE_RTL_XP 254
|
|
||||||
#define IDD_LOG_RTL_XP 255
|
|
||||||
#define IDD_UPDATE_POLICY_RTL_XP 256
|
|
||||||
#define IDD_NEW_VERSION_RTL_XP 257
|
|
||||||
#define IDR_FD_COMMAND_COM 300
|
#define IDR_FD_COMMAND_COM 300
|
||||||
#define IDR_FD_KERNEL_SYS 301
|
#define IDR_FD_KERNEL_SYS 301
|
||||||
#define IDR_FD_DISPLAY_EXE 302
|
#define IDR_FD_DISPLAY_EXE 302
|
||||||
|
|
24
src/rufus.c
24
src/rufus.c
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Copyright © 2011-2021 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2022 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1454,23 +1454,20 @@ static DWORD WINAPI BootCheckThread(LPVOID param)
|
||||||
if ((img_report.projected_size < MAX_ISO_TO_ESP_SIZE * MB) && HAS_REGULAR_EFI(img_report) &&
|
if ((img_report.projected_size < MAX_ISO_TO_ESP_SIZE * MB) && HAS_REGULAR_EFI(img_report) &&
|
||||||
(partition_type == PARTITION_STYLE_GPT) && IS_FAT(fs_type)) {
|
(partition_type == PARTITION_STYLE_GPT) && IS_FAT(fs_type)) {
|
||||||
char* choices[3] = { lmprintf(MSG_276, iso_image), lmprintf(MSG_277, "ISO → ESP"), lmprintf(MSG_277, dd_image) };
|
char* choices[3] = { lmprintf(MSG_276, iso_image), lmprintf(MSG_277, "ISO → ESP"), lmprintf(MSG_277, dd_image) };
|
||||||
i = SelectionDialog(lmprintf(MSG_274, "ISOHybrid"), lmprintf(MSG_275, iso_image, dd_image, iso_image, dd_image),
|
i = SelectionDialog(BS_AUTORADIOBUTTON, lmprintf(MSG_274, "ISOHybrid"),
|
||||||
choices, 3);
|
lmprintf(MSG_275, iso_image, dd_image, iso_image, dd_image), choices, 3, 1);
|
||||||
if (i < 0) // Cancel
|
if (i < 0) // Cancel
|
||||||
goto out;
|
goto out;
|
||||||
else if (i == 2)
|
write_as_esp = (i & 2);
|
||||||
write_as_esp = TRUE;
|
write_as_image = (i & 4);
|
||||||
else if (i == 3)
|
|
||||||
write_as_image = TRUE;
|
|
||||||
esp_already_asked = TRUE;
|
esp_already_asked = TRUE;
|
||||||
} else {
|
} else {
|
||||||
char* choices[2] = { lmprintf(MSG_276, iso_image), lmprintf(MSG_277, dd_image) };
|
char* choices[2] = { lmprintf(MSG_276, iso_image), lmprintf(MSG_277, dd_image) };
|
||||||
i = SelectionDialog(lmprintf(MSG_274, "ISOHybrid"), lmprintf(MSG_275, iso_image, dd_image, iso_image, dd_image),
|
i = SelectionDialog(BS_AUTORADIOBUTTON, lmprintf(MSG_274, "ISOHybrid"),
|
||||||
choices, 2);
|
lmprintf(MSG_275, iso_image, dd_image, iso_image, dd_image), choices, 2, 1);
|
||||||
if (i < 0) // Cancel
|
if (i < 0) // Cancel
|
||||||
goto out;
|
goto out;
|
||||||
else if (i == 2)
|
write_as_image = (i & 2);
|
||||||
write_as_image = TRUE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1541,11 +1538,10 @@ static DWORD WINAPI BootCheckThread(LPVOID param)
|
||||||
// so ask the users if they want to write it as an ESP.
|
// so ask the users if they want to write it as an ESP.
|
||||||
char* iso_image = lmprintf(MSG_036);
|
char* iso_image = lmprintf(MSG_036);
|
||||||
char* choices[2] = { lmprintf(MSG_276, iso_image), lmprintf(MSG_277, "ISO → ESP") };
|
char* choices[2] = { lmprintf(MSG_276, iso_image), lmprintf(MSG_277, "ISO → ESP") };
|
||||||
i = SelectionDialog(lmprintf(MSG_274, "ESP"), lmprintf(MSG_310), choices, 2);
|
i = SelectionDialog(BS_AUTORADIOBUTTON, lmprintf(MSG_274, "ESP"), lmprintf(MSG_310), choices, 2, 1);
|
||||||
if (i < 0) // Cancel
|
if (i < 0) // Cancel
|
||||||
goto out;
|
goto out;
|
||||||
else if (i == 2)
|
write_as_esp = (i & 2);
|
||||||
write_as_esp = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the selected target doesn't include BIOS, skip file downloads for GRUB/Syslinux
|
// If the selected target doesn't include BIOS, skip file downloads for GRUB/Syslinux
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Copyright © 2011-2021 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2022 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -558,7 +558,7 @@ extern BOOL CreateTooltip(HWND hControl, const char* message, int duration);
|
||||||
extern void DestroyTooltip(HWND hWnd);
|
extern void DestroyTooltip(HWND hWnd);
|
||||||
extern void DestroyAllTooltips(void);
|
extern void DestroyAllTooltips(void);
|
||||||
extern BOOL Notification(int type, const char* dont_display_setting, const notification_info* more_info, char* title, char* format, ...);
|
extern BOOL Notification(int type, const char* dont_display_setting, const notification_info* more_info, char* title, char* format, ...);
|
||||||
extern int SelectionDialog(char* title, char* message, char** choices, int size);
|
extern int SelectionDialog(int style, char* title, char* message, char** choices, int size, int mask);
|
||||||
extern void ListDialog(char* title, char* message, char** items, int size);
|
extern void ListDialog(char* title, char* message, char** items, int size);
|
||||||
extern SIZE GetTextSize(HWND hCtrl, char* txt);
|
extern SIZE GetTextSize(HWND hCtrl, char* txt);
|
||||||
extern BOOL ExtractAppIcon(const char* filename, BOOL bSilent);
|
extern BOOL ExtractAppIcon(const char* filename, BOOL bSilent);
|
||||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_ACCEPTFILES
|
EXSTYLE WS_EX_ACCEPTFILES
|
||||||
CAPTION "Rufus 3.19.1898"
|
CAPTION "Rufus 3.19.1899"
|
||||||
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
||||||
|
@ -395,8 +395,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 3,19,1898,0
|
FILEVERSION 3,19,1899,0
|
||||||
PRODUCTVERSION 3,19,1898,0
|
PRODUCTVERSION 3,19,1899,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -414,13 +414,13 @@ BEGIN
|
||||||
VALUE "Comments", "https://rufus.ie"
|
VALUE "Comments", "https://rufus.ie"
|
||||||
VALUE "CompanyName", "Akeo Consulting"
|
VALUE "CompanyName", "Akeo Consulting"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "3.19.1898"
|
VALUE "FileVersion", "3.19.1899"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2022 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2022 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
|
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
|
||||||
VALUE "OriginalFilename", "rufus-3.19.exe"
|
VALUE "OriginalFilename", "rufus-3.19.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "3.19.1898"
|
VALUE "ProductVersion", "3.19.1899"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
30
src/stdlg.c
30
src/stdlg.c
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Standard Dialog Routines (Browse for folder, About, etc)
|
* Standard Dialog Routines (Browse for folder, About, etc)
|
||||||
* Copyright © 2011-2021 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2022 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -859,13 +859,16 @@ BOOL Notification(int type, const char* dont_display_setting, const notification
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We only ever display one selection dialog, so set some params as globals
|
||||||
|
static int selection_dialog_style, selection_dialog_mask;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Custom dialog for radio button selection dialog
|
* Custom dialog for radio button selection dialog
|
||||||
*/
|
*/
|
||||||
INT_PTR CALLBACK SelectionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
INT_PTR CALLBACK SelectionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
LRESULT loc;
|
LRESULT loc;
|
||||||
int i, dh, r = -1;
|
int i, m, dh, r = -1;
|
||||||
// Prevent resizing
|
// Prevent resizing
|
||||||
static LRESULT disabled[9] = { HTLEFT, HTRIGHT, HTTOP, HTBOTTOM, HTSIZE,
|
static LRESULT disabled[9] = { HTLEFT, HTRIGHT, HTTOP, HTBOTTOM, HTSIZE,
|
||||||
HTTOPLEFT, HTTOPRIGHT, HTBOTTOMLEFT, HTBOTTOMRIGHT };
|
HTTOPLEFT, HTTOPRIGHT, HTBOTTOMLEFT, HTBOTTOMRIGHT };
|
||||||
|
@ -885,6 +888,9 @@ INT_PTR CALLBACK SelectionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARA
|
||||||
nDialogItems, IDC_SELECTION_CHOICEMAX - IDC_SELECTION_CHOICE1);
|
nDialogItems, IDC_SELECTION_CHOICEMAX - IDC_SELECTION_CHOICE1);
|
||||||
nDialogItems = IDC_SELECTION_CHOICEMAX - IDC_SELECTION_CHOICE1;
|
nDialogItems = IDC_SELECTION_CHOICEMAX - IDC_SELECTION_CHOICE1;
|
||||||
}
|
}
|
||||||
|
// Switch to checkboxes or some other style if requested
|
||||||
|
for (i = 0; i < nDialogItems; i++)
|
||||||
|
Button_SetStyle(GetDlgItem(hDlg, IDC_SELECTION_CHOICE1 + i), selection_dialog_style, TRUE);
|
||||||
// Get the system message box font. See http://stackoverflow.com/a/6057761
|
// Get the system message box font. See http://stackoverflow.com/a/6057761
|
||||||
ncm.cbSize = sizeof(ncm);
|
ncm.cbSize = sizeof(ncm);
|
||||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0);
|
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize, &ncm, 0);
|
||||||
|
@ -936,9 +942,9 @@ INT_PTR CALLBACK SelectionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARA
|
||||||
ResizeButtonHeight(hDlg, IDOK);
|
ResizeButtonHeight(hDlg, IDOK);
|
||||||
ResizeButtonHeight(hDlg, IDCANCEL);
|
ResizeButtonHeight(hDlg, IDCANCEL);
|
||||||
|
|
||||||
// Set the radio selection
|
// Set the default selection
|
||||||
Button_SetCheck(GetDlgItem(hDlg, IDC_SELECTION_CHOICE1), BST_CHECKED);
|
for (i = 0, m = 1; i < nDialogItems; i++, m <<= 1)
|
||||||
Button_SetCheck(GetDlgItem(hDlg, IDC_SELECTION_CHOICE2), BST_UNCHECKED);
|
Button_SetCheck(GetDlgItem(hDlg, IDC_SELECTION_CHOICE1 + i), (m & selection_dialog_mask) ? BST_CHECKED : BST_UNCHECKED);
|
||||||
return (INT_PTR)TRUE;
|
return (INT_PTR)TRUE;
|
||||||
case WM_CTLCOLORSTATIC:
|
case WM_CTLCOLORSTATIC:
|
||||||
// Change the background colour for static text and icon
|
// Change the background colour for static text and icon
|
||||||
|
@ -959,10 +965,9 @@ INT_PTR CALLBACK SelectionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARA
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
case IDOK:
|
case IDOK:
|
||||||
for (i = 0; (i < nDialogItems) &&
|
for (r = 0, i = 0, m = 1; i < nDialogItems; i++, m <<= 1)
|
||||||
(Button_GetCheck(GetDlgItem(hDlg, IDC_SELECTION_CHOICE1 + i)) != BST_CHECKED); i++);
|
if (Button_GetCheck(GetDlgItem(hDlg, IDC_SELECTION_CHOICE1 + i)) == BST_CHECKED)
|
||||||
if (i < nDialogItems)
|
r += m;
|
||||||
r = i + 1;
|
|
||||||
// Fall through
|
// Fall through
|
||||||
case IDNO:
|
case IDNO:
|
||||||
case IDCANCEL:
|
case IDCANCEL:
|
||||||
|
@ -977,7 +982,7 @@ INT_PTR CALLBACK SelectionCallback(HWND hDlg, UINT message, WPARAM wParam, LPARA
|
||||||
/*
|
/*
|
||||||
* Display an item selection dialog
|
* Display an item selection dialog
|
||||||
*/
|
*/
|
||||||
int SelectionDialog(char* title, char* message, char** choices, int size)
|
int SelectionDialog(int style, char* title, char* message, char** choices, int size, int mask)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -986,6 +991,9 @@ int SelectionDialog(char* title, char* message, char** choices, int size)
|
||||||
szMessageText = message;
|
szMessageText = message;
|
||||||
szDialogItem = choices;
|
szDialogItem = choices;
|
||||||
nDialogItems = size;
|
nDialogItems = size;
|
||||||
|
selection_dialog_style = style;
|
||||||
|
selection_dialog_mask = mask;
|
||||||
|
assert(selection_dialog_style == BS_AUTORADIOBUTTON || selection_dialog_style == BS_AUTOCHECKBOX);
|
||||||
ret = (int)MyDialogBox(hMainInstance, IDD_SELECTION, hMainDialog, SelectionCallback);
|
ret = (int)MyDialogBox(hMainInstance, IDD_SELECTION, hMainDialog, SelectionCallback);
|
||||||
dialog_showing--;
|
dialog_showing--;
|
||||||
|
|
||||||
|
@ -1971,6 +1979,7 @@ LPCDLGTEMPLATE GetDialogTemplate(int Dialog_ID)
|
||||||
HWND MyCreateDialog(HINSTANCE hInstance, int Dialog_ID, HWND hWndParent, DLGPROC lpDialogFunc)
|
HWND MyCreateDialog(HINSTANCE hInstance, int Dialog_ID, HWND hWndParent, DLGPROC lpDialogFunc)
|
||||||
{
|
{
|
||||||
LPCDLGTEMPLATE rcTemplate = GetDialogTemplate(Dialog_ID);
|
LPCDLGTEMPLATE rcTemplate = GetDialogTemplate(Dialog_ID);
|
||||||
|
assert(rcTemplate != NULL);
|
||||||
HWND hDlg = CreateDialogIndirect(hInstance, rcTemplate, hWndParent, lpDialogFunc);
|
HWND hDlg = CreateDialogIndirect(hInstance, rcTemplate, hWndParent, lpDialogFunc);
|
||||||
safe_free(rcTemplate);
|
safe_free(rcTemplate);
|
||||||
return hDlg;
|
return hDlg;
|
||||||
|
@ -1987,6 +1996,7 @@ INT_PTR MyDialogBox(HINSTANCE hInstance, int Dialog_ID, HWND hWndParent, DLGPROC
|
||||||
// main dialog was reduced => Ensure the main dialog is visible before we display anything.
|
// main dialog was reduced => Ensure the main dialog is visible before we display anything.
|
||||||
ShowWindow(hMainDialog, SW_NORMAL);
|
ShowWindow(hMainDialog, SW_NORMAL);
|
||||||
|
|
||||||
|
assert(rcTemplate != NULL);
|
||||||
ret = DialogBoxIndirect(hMainInstance, rcTemplate, hWndParent, lpDialogFunc);
|
ret = DialogBoxIndirect(hMainInstance, rcTemplate, hWndParent, lpDialogFunc);
|
||||||
safe_free(rcTemplate);
|
safe_free(rcTemplate);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue