1
1
Fork 0
mirror of https://github.com/pbatard/rufus.git synced 2024-08-14 23:57:05 +00:00

Added drag-n-drop support

This commit is contained in:
SeymourApps 2016-01-09 21:47:13 -05:00
parent ee22e57cd1
commit 54a1333274
2 changed files with 534 additions and 508 deletions

View file

@ -2083,8 +2083,9 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
EXT_DECL(img_ext, NULL, __VA_GROUP__("*.img;*.vhd;*.gz;*.bzip2;*.xz;*.lzma;*.Z;*.zip"), __VA_GROUP__(lmprintf(MSG_095))); EXT_DECL(img_ext, NULL, __VA_GROUP__("*.img;*.vhd;*.gz;*.bzip2;*.xz;*.lzma;*.Z;*.zip"), __VA_GROUP__(lmprintf(MSG_095)));
EXT_DECL(iso_ext, NULL, __VA_GROUP__("*.iso"), __VA_GROUP__(lmprintf(MSG_036))); EXT_DECL(iso_ext, NULL, __VA_GROUP__("*.iso"), __VA_GROUP__(lmprintf(MSG_036)));
LPNMTOOLBAR lpnmtb; LPNMTOOLBAR lpnmtb;
HDROP droppedFileInfo;
switch (message) { switch(message) {
case UM_MEDIA_CHANGE: case UM_MEDIA_CHANGE:
wParam = DBT_CUSTOMEVENT; wParam = DBT_CUSTOMEVENT;
@ -2100,8 +2101,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
// DO *NOT* USE WM_DEVICECHANGE AS THE MESSAGE FROM THE TIMER PROC, as it may be filtered! // DO *NOT* USE WM_DEVICECHANGE AS THE MESSAGE FROM THE TIMER PROC, as it may be filtered!
// For instance filtering will occur when (un)plugging in a FreeBSD UFD on Windows 8. // For instance filtering will occur when (un)plugging in a FreeBSD UFD on Windows 8.
// Instead, use a custom user message, such as UM_MEDIA_CHANGE, to set DBT_CUSTOMEVENT. // Instead, use a custom user message, such as UM_MEDIA_CHANGE, to set DBT_CUSTOMEVENT.
if (format_thid == NULL) { if(format_thid == NULL) {
switch (wParam) { switch(wParam) {
case DBT_DEVICEARRIVAL: case DBT_DEVICEARRIVAL:
case DBT_DEVICEREMOVECOMPLETE: case DBT_DEVICEREMOVECOMPLETE:
case DBT_CUSTOMEVENT: // Sent by our timer refresh function or for card reader media change case DBT_CUSTOMEVENT: // Sent by our timer refresh function or for card reader media change
@ -2112,7 +2113,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
case DBT_DEVNODES_CHANGED: case DBT_DEVNODES_CHANGED:
// If it's been more than a second since last device refresh, arm a refresh timer // If it's been more than a second since last device refresh, arm a refresh timer
if (GetTickCount() > LastRefresh + 1000) { if(GetTickCount() > LastRefresh + 1000) {
LastRefresh = GetTickCount(); LastRefresh = GetTickCount();
SetTimer(hMainDialog, TID_REFRESH_TIMER, 1000, RefreshTimer); SetTimer(hMainDialog, TID_REFRESH_TIMER, 1000, RefreshTimer);
} }
@ -2128,7 +2129,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
// Make sure fScale is set before the first call to apply localization, so that move/resize scale appropriately // Make sure fScale is set before the first call to apply localization, so that move/resize scale appropriately
hDC = GetDC(hDlg); hDC = GetDC(hDlg);
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f; fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
if (hDC != NULL) if(hDC != NULL)
ReleaseDC(hDlg, hDC); ReleaseDC(hDlg, hDC);
apply_localization(IDD_DIALOG, hDlg); apply_localization(IDD_DIALOG, hDlg);
SetUpdateCheck(); SetUpdateCheck();
@ -2141,18 +2142,18 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
GetUSBDevices(0); GetUSBDevices(0);
CheckForUpdates(FALSE); CheckForUpdates(FALSE);
// Register MEDIA_INSERTED/MEDIA_REMOVED notifications for card readers // Register MEDIA_INSERTED/MEDIA_REMOVED notifications for card readers
if ((pfSHChangeNotifyRegister != NULL) && (SUCCEEDED(SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, &pidlDesktop)))) { if((pfSHChangeNotifyRegister != NULL) && (SUCCEEDED(SHGetSpecialFolderLocation(0, CSIDL_DESKTOP, &pidlDesktop)))) {
NotifyEntry.pidl = pidlDesktop; NotifyEntry.pidl = pidlDesktop;
NotifyEntry.fRecursive = TRUE; NotifyEntry.fRecursive = TRUE;
// NB: The following only works if the media is already formatted. // NB: The following only works if the media is already formatted.
// If you insert a blank card, notifications will not be sent... :( // If you insert a blank card, notifications will not be sent... :(
ulRegister = pfSHChangeNotifyRegister(hDlg, 0x0001|0x0002|0x8000, ulRegister = pfSHChangeNotifyRegister(hDlg, 0x0001 | 0x0002 | 0x8000,
SHCNE_MEDIAINSERTED|SHCNE_MEDIAREMOVED, UM_MEDIA_CHANGE, 1, &NotifyEntry); SHCNE_MEDIAINSERTED | SHCNE_MEDIAREMOVED, UM_MEDIA_CHANGE, 1, &NotifyEntry);
} }
// Bring our Window on top. We have to go through all *THREE* of these, or Far Manager hides our window :( // Bring our Window on top. We have to go through all *THREE* of these, or Far Manager hides our window :(
SetWindowPos(hMainDialog, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); SetWindowPos(hMainDialog, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
SetWindowPos(hMainDialog, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); SetWindowPos(hMainDialog, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
SetWindowPos(hMainDialog, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); SetWindowPos(hMainDialog, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
// Set 'Start' as the selected button if it's enabled, otherwise use 'Select ISO', instead // Set 'Start' as the selected button if it's enabled, otherwise use 'Select ISO', instead
SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)(IsWindowEnabled(hStart) ? hStart : hSelectISO), TRUE); SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)(IsWindowEnabled(hStart) ? hStart : hSelectISO), TRUE);
@ -2170,16 +2171,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
// The things one must do to get an ellipsis and text alignment on the status bar... // The things one must do to get an ellipsis and text alignment on the status bar...
case WM_DRAWITEM: case WM_DRAWITEM:
if (wParam == IDC_STATUS) { if(wParam == IDC_STATUS) {
pDI = (DRAWITEMSTRUCT*)lParam; pDI = (DRAWITEMSTRUCT*)lParam;
pDI->rcItem.top -= (int)((4.0f * fScale) - 6.0f); pDI->rcItem.top -= (int)((4.0f * fScale) - 6.0f);
pDI->rcItem.left += (int)(((pDI->itemID == SB_SECTION_MIDDLE)?-2.0f:4.0f) * fScale); pDI->rcItem.left += (int)(((pDI->itemID == SB_SECTION_MIDDLE) ? -2.0f : 4.0f) * fScale);
SetBkMode(pDI->hDC, TRANSPARENT); SetBkMode(pDI->hDC, TRANSPARENT);
switch(pDI->itemID) { switch(pDI->itemID) {
case SB_SECTION_LEFT: case SB_SECTION_LEFT:
SetTextColor(pDI->hDC, GetSysColor(COLOR_BTNTEXT)); SetTextColor(pDI->hDC, GetSysColor(COLOR_BTNTEXT));
DrawTextExU(pDI->hDC, szStatusMessage, -1, &pDI->rcItem, DrawTextExU(pDI->hDC, szStatusMessage, -1, &pDI->rcItem,
DT_LEFT|DT_END_ELLIPSIS|DT_PATH_ELLIPSIS, NULL); DT_LEFT | DT_END_ELLIPSIS | DT_PATH_ELLIPSIS, NULL);
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
case SB_SECTION_RIGHT: case SB_SECTION_RIGHT:
SetTextColor(pDI->hDC, GetSysColor(COLOR_3DSHADOW)); SetTextColor(pDI->hDC, GetSysColor(COLOR_3DSHADOW));
@ -2190,12 +2191,12 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
break; break;
case WM_COMMAND: case WM_COMMAND:
if ((LOWORD(wParam) >= UM_LANGUAGE_MENU) && (LOWORD(wParam) < UM_LANGUAGE_MENU_MAX)) { if((LOWORD(wParam) >= UM_LANGUAGE_MENU) && (LOWORD(wParam) < UM_LANGUAGE_MENU_MAX)) {
selected_language = LOWORD(wParam) - UM_LANGUAGE_MENU; selected_language = LOWORD(wParam) - UM_LANGUAGE_MENU;
i = 0; i = 0;
list_for_each_entry(lcmd, &locale_list, loc_cmd, list) { list_for_each_entry(lcmd, &locale_list, loc_cmd, list) {
if (i++ == selected_language) { if(i++ == selected_language) {
if (selected_locale != lcmd) { if(selected_locale != lcmd) {
selected_locale = lcmd; selected_locale = lcmd;
selected_langid = get_language_id(lcmd); selected_langid = get_language_id(lcmd);
relaunch = TRUE; relaunch = TRUE;
@ -2210,16 +2211,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
case IDCANCEL: case IDCANCEL:
PF_INIT(SHChangeNotifyDeregister, Shell32); PF_INIT(SHChangeNotifyDeregister, Shell32);
EnableWindow(GetDlgItem(hDlg, IDCANCEL), FALSE); EnableWindow(GetDlgItem(hDlg, IDCANCEL), FALSE);
if (format_thid != NULL) { if(format_thid != NULL) {
if ((no_confirmation_on_cancel) || (MessageBoxExU(hMainDialog, lmprintf(MSG_105), lmprintf(MSG_049), if((no_confirmation_on_cancel) || (MessageBoxExU(hMainDialog, lmprintf(MSG_105), lmprintf(MSG_049),
MB_YESNO|MB_ICONWARNING|MB_IS_RTL, selected_langid) == IDYES)) { MB_YESNO | MB_ICONWARNING | MB_IS_RTL, selected_langid) == IDYES)) {
// Operation may have completed in the meantime // Operation may have completed in the meantime
if (format_thid != NULL) { if(format_thid != NULL) {
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED; FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | ERROR_CANCELLED;
PrintInfo(0, MSG_201); PrintInfo(0, MSG_201);
uprintf("Cancelling"); uprintf("Cancelling");
// Start a timer to detect blocking operations during ISO file extraction // Start a timer to detect blocking operations during ISO file extraction
if (iso_blocking_status >= 0) { if(iso_blocking_status >= 0) {
last_iso_blocking_status = iso_blocking_status; last_iso_blocking_status = iso_blocking_status;
SetTimer(hMainDialog, TID_BLOCKING_TIMER, 3000, BlockingTimer); SetTimer(hMainDialog, TID_BLOCKING_TIMER, 3000, BlockingTimer);
} }
@ -2230,7 +2231,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
no_confirmation_on_cancel = FALSE; no_confirmation_on_cancel = FALSE;
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
} }
if ((pfSHChangeNotifyDeregister != NULL) && (ulRegister != 0)) if((pfSHChangeNotifyDeregister != NULL) && (ulRegister != 0))
pfSHChangeNotifyDeregister(ulRegister); pfSHChangeNotifyDeregister(ulRegister);
PostQuitMessage(0); PostQuitMessage(0);
StrArrayDestroy(&DriveID); StrArrayDestroy(&DriveID);
@ -2245,16 +2246,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
break; break;
case IDC_LOG: case IDC_LOG:
// Place the log Window to the right (or left for RTL) of our dialog on first display // Place the log Window to the right (or left for RTL) of our dialog on first display
if (first_log_display) { if(first_log_display) {
GetClientRect(GetDesktopWindow(), &DesktopRect); GetClientRect(GetDesktopWindow(), &DesktopRect);
GetWindowRect(hLogDlg, &DialogRect); GetWindowRect(hLogDlg, &DialogRect);
nWidth = DialogRect.right - DialogRect.left; nWidth = DialogRect.right - DialogRect.left;
nHeight = DialogRect.bottom - DialogRect.top; nHeight = DialogRect.bottom - DialogRect.top;
GetWindowRect(hDlg, &DialogRect); GetWindowRect(hDlg, &DialogRect);
offset = GetSystemMetrics(SM_CXSIZEFRAME) + (int)(2.0f * fScale); offset = GetSystemMetrics(SM_CXSIZEFRAME) + (int)(2.0f * fScale);
if (nWindowsVersion >= WINDOWS_10) if(nWindowsVersion >= WINDOWS_10)
offset += (int)(-14.0f * fScale); offset += (int)(-14.0f * fScale);
if (right_to_left_mode) if(right_to_left_mode)
Point.x = max(DialogRect.left - offset - nWidth, 0); Point.x = max(DialogRect.left - offset - nWidth, 0);
else else
Point.x = min(DialogRect.right + offset, DesktopRect.right - nWidth); Point.x = min(DialogRect.right + offset, DesktopRect.right - nWidth);
@ -2264,12 +2265,12 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
// The log may have been recentered to fit the screen, in which case, try to shift our main dialog left (or right for RTL) // The log may have been recentered to fit the screen, in which case, try to shift our main dialog left (or right for RTL)
nWidth = DialogRect.right - DialogRect.left; nWidth = DialogRect.right - DialogRect.left;
nHeight = DialogRect.bottom - DialogRect.top; nHeight = DialogRect.bottom - DialogRect.top;
if (right_to_left_mode) { if(right_to_left_mode) {
Point.x = DialogRect.left; Point.x = DialogRect.left;
GetWindowRect(hLogDlg, &DialogRect); GetWindowRect(hLogDlg, &DialogRect);
Point.x = max(Point.x, DialogRect.right - DialogRect.left + offset); Point.x = max(Point.x, DialogRect.right - DialogRect.left + offset);
} else { } else {
Point.x = max((DialogRect.left<0)?DialogRect.left:0, Point.x - offset - nWidth); Point.x = max((DialogRect.left < 0) ? DialogRect.left : 0, Point.x - offset - nWidth);
} }
MoveWindow(hDlg, Point.x, Point.y, nWidth, nHeight, TRUE); MoveWindow(hDlg, Point.x, Point.y, nWidth, nHeight, TRUE);
first_log_display = FALSE; first_log_display = FALSE;
@ -2280,7 +2281,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0); SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0);
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)hStart, TRUE); SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)hStart, TRUE);
// Must come last for the log window to get focus // Must come last for the log window to get focus
ShowWindow(hLogDlg, log_displayed?SW_SHOW:SW_HIDE); ShowWindow(hLogDlg, log_displayed ? SW_SHOW : SW_HIDE);
break; break;
#ifdef RUFUS_TEST #ifdef RUFUS_TEST
case IDC_TEST: case IDC_TEST:
@ -2290,39 +2291,39 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
advanced_mode = !advanced_mode; advanced_mode = !advanced_mode;
WriteSettingBool(SETTING_ADVANCED_MODE, advanced_mode); WriteSettingBool(SETTING_ADVANCED_MODE, advanced_mode);
ToggleAdvanced(advanced_mode); ToggleAdvanced(advanced_mode);
SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE<<16) | IDC_FILESYSTEM, SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE << 16) | IDC_FILESYSTEM,
ComboBox_GetCurSel(hFileSystem)); ComboBox_GetCurSel(hFileSystem));
break; break;
case IDC_LABEL: case IDC_LABEL:
if (HIWORD(wParam) == EN_CHANGE) if(HIWORD(wParam) == EN_CHANGE)
user_changed_label = TRUE; user_changed_label = TRUE;
break; break;
case IDC_DEVICE: case IDC_DEVICE:
if (HIWORD(wParam) != CBN_SELCHANGE) if(HIWORD(wParam) != CBN_SELCHANGE)
break; break;
nb_devices = ComboBox_GetCount(hDeviceList); nb_devices = ComboBox_GetCount(hDeviceList);
PrintStatusDebug(0, (nb_devices==1)?MSG_208:MSG_209, nb_devices); PrintStatusDebug(0, (nb_devices == 1) ? MSG_208 : MSG_209, nb_devices);
PopulateProperties(ComboBox_GetCurSel(hDeviceList)); PopulateProperties(ComboBox_GetCurSel(hDeviceList));
SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE<<16) | IDC_FILESYSTEM, SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE << 16) | IDC_FILESYSTEM,
ComboBox_GetCurSel(hFileSystem)); ComboBox_GetCurSel(hFileSystem));
break; break;
case IDC_NBPASSES: case IDC_NBPASSES:
if (HIWORD(wParam) != CBN_SELCHANGE) if(HIWORD(wParam) != CBN_SELCHANGE)
break; break;
SetPassesTooltip(); SetPassesTooltip();
break; break;
case IDC_PARTITION_TYPE: case IDC_PARTITION_TYPE:
if (HIWORD(wParam) != CBN_SELCHANGE) if(HIWORD(wParam) != CBN_SELCHANGE)
break; break;
SetPartitionSchemeTooltip(); SetPartitionSchemeTooltip();
SetFSFromISO(); SetFSFromISO();
// fall-through // fall-through
case IDC_FILESYSTEM: case IDC_FILESYSTEM:
if (HIWORD(wParam) != CBN_SELCHANGE) if(HIWORD(wParam) != CBN_SELCHANGE)
break; break;
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
tt = GETTARGETTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme))); tt = GETTARGETTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
if ((selection_default == BT_IMG) && IsChecked(IDC_BOOT)) { if((selection_default == BT_IMG) && IsChecked(IDC_BOOT)) {
ToggleImage(FALSE); ToggleImage(FALSE);
EnableAdvancedBootOptions(FALSE, TRUE); EnableAdvancedBootOptions(FALSE, TRUE);
SetBoot(fs, tt); SetBoot(fs, tt);
@ -2331,37 +2332,37 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
} }
SetClusterSizes(fs); SetClusterSizes(fs);
// Disable/restore the quick format control depending on large FAT32 or ReFS // Disable/restore the quick format control depending on large FAT32 or ReFS
if ( ((fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32))) || (fs == FS_REFS) ) { if(((fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32))) || (fs == FS_REFS)) {
if (IsWindowEnabled(GetDlgItem(hMainDialog, IDC_QUICKFORMAT))) { if(IsWindowEnabled(GetDlgItem(hMainDialog, IDC_QUICKFORMAT))) {
uQFChecked = IsChecked(IDC_QUICKFORMAT); uQFChecked = IsChecked(IDC_QUICKFORMAT);
CheckDlgButton(hMainDialog, IDC_QUICKFORMAT, BST_CHECKED); CheckDlgButton(hMainDialog, IDC_QUICKFORMAT, BST_CHECKED);
EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), FALSE); EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), FALSE);
} }
} else { } else {
if (!IsWindowEnabled(GetDlgItem(hMainDialog, IDC_QUICKFORMAT))) { if(!IsWindowEnabled(GetDlgItem(hMainDialog, IDC_QUICKFORMAT))) {
CheckDlgButton(hMainDialog, IDC_QUICKFORMAT, uQFChecked); CheckDlgButton(hMainDialog, IDC_QUICKFORMAT, uQFChecked);
EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), TRUE); EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), TRUE);
} }
} }
if (fs < 0) { if(fs < 0) {
EnableBootOptions(TRUE, TRUE); EnableBootOptions(TRUE, TRUE);
SetMBRProps(); SetMBRProps();
// Remove the SysLinux and ReactOS options if they exists // Remove the SysLinux and ReactOS options if they exists
if (ComboBox_GetItemData(hBootType, ComboBox_GetCount(hBootType)-1) == (BT_MAX-1)) { if(ComboBox_GetItemData(hBootType, ComboBox_GetCount(hBootType) - 1) == (BT_MAX - 1)) {
for (i=BT_SYSLINUX_V4; i<BT_MAX; i++) for(i = BT_SYSLINUX_V4; i < BT_MAX; i++)
IGNORE_RETVAL(ComboBox_DeleteString(hBootType, ComboBox_GetCount(hBootType)-1)); IGNORE_RETVAL(ComboBox_DeleteString(hBootType, ComboBox_GetCount(hBootType) - 1));
IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, 1)); IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, 1));
} }
break; break;
} }
if ((fs == FS_EXFAT) || (fs == FS_UDF) || (fs == FS_REFS)) { if((fs == FS_EXFAT) || (fs == FS_UDF) || (fs == FS_REFS)) {
if (IsWindowEnabled(hBoot)) { if(IsWindowEnabled(hBoot)) {
// unlikely to be supported by BIOSes => don't bother // unlikely to be supported by BIOSes => don't bother
IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, 0)); IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, 0));
uBootChecked = IsChecked(IDC_BOOT); uBootChecked = IsChecked(IDC_BOOT);
CheckDlgButton(hDlg, IDC_BOOT, BST_UNCHECKED); CheckDlgButton(hDlg, IDC_BOOT, BST_UNCHECKED);
EnableBootOptions(FALSE, TRUE); EnableBootOptions(FALSE, TRUE);
} else if (IsChecked(IDC_BOOT)) { } else if(IsChecked(IDC_BOOT)) {
uBootChecked = TRUE; uBootChecked = TRUE;
CheckDlgButton(hDlg, IDC_BOOT, BST_UNCHECKED); CheckDlgButton(hDlg, IDC_BOOT, BST_UNCHECKED);
} }
@ -2375,7 +2376,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
break; break;
case IDC_BOOT: case IDC_BOOT:
EnableAdvancedBootOptions(TRUE, TRUE); EnableAdvancedBootOptions(TRUE, TRUE);
if (selection_default == BT_IMG) if(selection_default == BT_IMG)
ToggleImage(!IsChecked(IDC_BOOT)); ToggleImage(!IsChecked(IDC_BOOT));
if(IsChecked(IDC_BOOT)) { if(IsChecked(IDC_BOOT)) {
@ -2385,77 +2386,77 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
} }
break; break;
case IDC_BOOTTYPE: case IDC_BOOTTYPE:
if (HIWORD(wParam) != CBN_SELCHANGE) if(HIWORD(wParam) != CBN_SELCHANGE)
break; break;
selection_default = (int) ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); selection_default = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
EnableAdvancedBootOptions(TRUE, TRUE); EnableAdvancedBootOptions(TRUE, TRUE);
ToggleImage(!IsChecked(IDC_BOOT) || (selection_default != BT_IMG)); ToggleImage(!IsChecked(IDC_BOOT) || (selection_default != BT_IMG));
SetToGo(); SetToGo();
if ((selection_default == BT_ISO) || (selection_default == BT_IMG)) { if((selection_default == BT_ISO) || (selection_default == BT_IMG)) {
if ((image_path != NULL) && (img_report.label[0] != 0)) { if((image_path != NULL) && (img_report.label[0] != 0)) {
// Some distros (eg. Arch Linux) want to see a specific label => ignore user one // Some distros (eg. Arch Linux) want to see a specific label => ignore user one
SetWindowTextU(hLabel, img_report.label); SetWindowTextU(hLabel, img_report.label);
} }
} else { } else {
if (selection_default == BT_UEFI_NTFS) { if(selection_default == BT_UEFI_NTFS) {
// Try to select NTFS as default // Try to select NTFS as default
for (i=0; i<ComboBox_GetCount(hFileSystem); i++) { for(i = 0; i < ComboBox_GetCount(hFileSystem); i++) {
fs = (int)ComboBox_GetItemData(hFileSystem, i); fs = (int)ComboBox_GetItemData(hFileSystem, i);
if (fs == FS_NTFS) if(fs == FS_NTFS)
IGNORE_RETVAL(ComboBox_SetCurSel(hFileSystem, i)); IGNORE_RETVAL(ComboBox_SetCurSel(hFileSystem, i));
} }
SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE<<16) | IDC_FILESYSTEM, SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE << 16) | IDC_FILESYSTEM,
ComboBox_GetCurSel(hFileSystem)); ComboBox_GetCurSel(hFileSystem));
} }
// For non ISO, if the user manually set a label, try to preserve it // For non ISO, if the user manually set a label, try to preserve it
if (!user_changed_label) if(!user_changed_label)
SetWindowTextU(hLabel, SelectedDrive.proposed_label); SetWindowTextU(hLabel, SelectedDrive.proposed_label);
// Reset disk ID to 0x80 if Rufus MBR is used // Reset disk ID to 0x80 if Rufus MBR is used
IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, 0)); IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, 0));
} }
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
case IDC_SELECT_ISO: case IDC_SELECT_ISO:
if (iso_provided) { if(iso_provided) {
uprintf("Image provided: '%s'\n", image_path); uprintf("Image provided: '%s'\n", image_path);
iso_provided = FALSE; // One off thing... iso_provided = FALSE; // One off thing...
} else { } else {
safe_free(image_path); safe_free(image_path);
EnableWindow(hStatusToolbar, FALSE); EnableWindow(hStatusToolbar, FALSE);
image_path = FileDialog(FALSE, NULL, (selection_default == BT_IMG)?&img_ext:&iso_ext, 0); image_path = FileDialog(FALSE, NULL, (selection_default == BT_IMG) ? &img_ext : &iso_ext, 0);
if (image_path == NULL) { if(image_path == NULL) {
CreateTooltip(hSelectISO, lmprintf(MSG_173), -1); CreateTooltip(hSelectISO, lmprintf(MSG_173), -1);
PrintStatus(0, MSG_086); PrintStatus(0, MSG_086);
break; break;
} }
} }
FormatStatus = 0; FormatStatus = 0;
if (CreateThread(NULL, 0, ISOScanThread, NULL, 0, NULL) == NULL) { if(CreateThread(NULL, 0, ISOScanThread, NULL, 0, NULL) == NULL) {
uprintf("Unable to start ISO scanning thread"); uprintf("Unable to start ISO scanning thread");
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_CANT_START_THREAD); FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD);
} }
break; break;
case IDC_WINDOWS_INSTALL: case IDC_WINDOWS_INSTALL:
case IDC_WINDOWS_TO_GO: case IDC_WINDOWS_TO_GO:
if ( (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL)) == BST_CHECKED) || if((Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL)) == BST_CHECKED) ||
(Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED) ) { (Button_GetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO)) == BST_CHECKED)) {
SetFSFromISO(); SetFSFromISO();
SetMBRProps(); SetMBRProps();
SetMBRForUEFI(TRUE); SetMBRForUEFI(TRUE);
} }
break; break;
case IDC_RUFUS_MBR: case IDC_RUFUS_MBR:
if ((HIWORD(wParam)) == BN_CLICKED) if((HIWORD(wParam)) == BN_CLICKED)
mbr_selected_by_user = IsChecked(IDC_RUFUS_MBR); mbr_selected_by_user = IsChecked(IDC_RUFUS_MBR);
break; break;
case IDC_ENABLE_FIXED_DISKS: case IDC_ENABLE_FIXED_DISKS:
if ((HIWORD(wParam)) == BN_CLICKED) { if((HIWORD(wParam)) == BN_CLICKED) {
enable_HDDs = !enable_HDDs; enable_HDDs = !enable_HDDs;
PrintStatus2000(lmprintf(MSG_253), enable_HDDs); PrintStatus2000(lmprintf(MSG_253), enable_HDDs);
GetUSBDevices(0); GetUSBDevices(0);
} }
break; break;
case IDC_START: case IDC_START:
if (format_thid != NULL) { if(format_thid != NULL) {
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
} }
FormatStatus = 0; FormatStatus = 0;
@ -2468,18 +2469,18 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
SendMessage(hProgress, PBM_SETPOS, 0, 0); SendMessage(hProgress, PBM_SETPOS, 0, 0);
selection_default = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); selection_default = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
nDeviceIndex = ComboBox_GetCurSel(hDeviceList); nDeviceIndex = ComboBox_GetCurSel(hDeviceList);
if (nDeviceIndex != CB_ERR) { if(nDeviceIndex != CB_ERR) {
if (!zero_drive) { if(!zero_drive) {
if ((IsChecked(IDC_BOOT)) && (!BootCheck())) { if((IsChecked(IDC_BOOT)) && (!BootCheck())) {
format_op_in_progress = FALSE; format_op_in_progress = FALSE;
break; break;
} }
// Display a warning about UDF formatting times // Display a warning about UDF formatting times
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
if (fs == FS_UDF) { if(fs == FS_UDF) {
dur_secs = (uint32_t)(((double)SelectedDrive.DiskSize) / 1073741824.0f / UDF_FORMAT_SPEED); dur_secs = (uint32_t)(((double)SelectedDrive.DiskSize) / 1073741824.0f / UDF_FORMAT_SPEED);
if (dur_secs > UDF_FORMAT_WARN) { if(dur_secs > UDF_FORMAT_WARN) {
dur_mins = dur_secs / 60; dur_mins = dur_secs / 60;
dur_secs -= dur_mins * 60; dur_secs -= dur_mins * 60;
MessageBoxExU(hMainDialog, lmprintf(MSG_112, dur_mins, dur_secs), lmprintf(MSG_113), MessageBoxExU(hMainDialog, lmprintf(MSG_112, dur_mins, dur_secs), lmprintf(MSG_113),
@ -2491,16 +2492,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
} }
// Ask users how they want to write ISOHybrid images // Ask users how they want to write ISOHybrid images
if ((IsChecked(IDC_BOOT)) && (img_report.is_bootable_img) && if((IsChecked(IDC_BOOT)) && (img_report.is_bootable_img) &&
(ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)) == BT_ISO)) { (ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)) == BT_ISO)) {
char* iso_image = lmprintf(MSG_036); char* iso_image = lmprintf(MSG_036);
char* dd_image = lmprintf(MSG_095); char* dd_image = lmprintf(MSG_095);
i = Selection(lmprintf(MSG_274), lmprintf(MSG_275, iso_image, dd_image, iso_image, dd_image), i = Selection(lmprintf(MSG_274), lmprintf(MSG_275, iso_image, dd_image, iso_image, dd_image),
lmprintf(MSG_276, iso_image), lmprintf(MSG_277, dd_image)); lmprintf(MSG_276, iso_image), lmprintf(MSG_277, dd_image));
if (i < 0) { // Cancel if(i < 0) { // Cancel
format_op_in_progress = FALSE; format_op_in_progress = FALSE;
break; break;
} else if (i == 2) { } else if(i == 2) {
selection_default = BT_IMG; selection_default = BT_IMG;
SetComboEntry(hBootType, selection_default); SetComboEntry(hBootType, selection_default);
} }
@ -2508,21 +2509,21 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
} }
GetWindowTextU(hDeviceList, tmp, ARRAYSIZE(tmp)); GetWindowTextU(hDeviceList, tmp, ARRAYSIZE(tmp));
if (MessageBoxExU(hMainDialog, lmprintf(MSG_003, tmp), if(MessageBoxExU(hMainDialog, lmprintf(MSG_003, tmp),
APPLICATION_NAME, MB_OKCANCEL|MB_ICONWARNING|MB_IS_RTL, selected_langid) == IDCANCEL) { APPLICATION_NAME, MB_OKCANCEL | MB_ICONWARNING | MB_IS_RTL, selected_langid) == IDCANCEL) {
format_op_in_progress = FALSE; format_op_in_progress = FALSE;
zero_drive = FALSE; zero_drive = FALSE;
break; break;
} }
if ((SelectedDrive.nPartitions > 1) && (MessageBoxExU(hMainDialog, lmprintf(MSG_093), if((SelectedDrive.nPartitions > 1) && (MessageBoxExU(hMainDialog, lmprintf(MSG_093),
lmprintf(MSG_094), MB_OKCANCEL|MB_ICONWARNING|MB_IS_RTL, selected_langid) == IDCANCEL)) { lmprintf(MSG_094), MB_OKCANCEL | MB_ICONWARNING | MB_IS_RTL, selected_langid) == IDCANCEL)) {
format_op_in_progress = FALSE; format_op_in_progress = FALSE;
zero_drive = FALSE; zero_drive = FALSE;
break; break;
} }
if ((!zero_drive) && (IsChecked(IDC_BOOT)) && (SelectedDrive.Geometry.BytesPerSector != 512) && if((!zero_drive) && (IsChecked(IDC_BOOT)) && (SelectedDrive.Geometry.BytesPerSector != 512) &&
(MessageBoxExU(hMainDialog, lmprintf(MSG_196, SelectedDrive.Geometry.BytesPerSector), (MessageBoxExU(hMainDialog, lmprintf(MSG_196, SelectedDrive.Geometry.BytesPerSector),
lmprintf(MSG_197), MB_OKCANCEL|MB_ICONWARNING|MB_IS_RTL, selected_langid) == IDCANCEL)) { lmprintf(MSG_197), MB_OKCANCEL | MB_ICONWARNING | MB_IS_RTL, selected_langid) == IDCANCEL)) {
format_op_in_progress = FALSE; format_op_in_progress = FALSE;
break; break;
} }
@ -2532,9 +2533,9 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
DeviceNum = (DWORD)ComboBox_GetItemData(hDeviceList, nDeviceIndex); DeviceNum = (DWORD)ComboBox_GetItemData(hDeviceList, nDeviceIndex);
InitProgress(zero_drive); InitProgress(zero_drive);
format_thid = CreateThread(NULL, 0, FormatThread, (LPVOID)(uintptr_t)DeviceNum, 0, NULL); format_thid = CreateThread(NULL, 0, FormatThread, (LPVOID)(uintptr_t)DeviceNum, 0, NULL);
if (format_thid == NULL) { if(format_thid == NULL) {
uprintf("Unable to start formatting thread"); uprintf("Unable to start formatting thread");
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_CANT_START_THREAD); FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD);
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, (WPARAM)FALSE, 0); PostMessage(hMainDialog, UM_FORMAT_COMPLETED, (WPARAM)FALSE, 0);
} }
uprintf("\r\nFormat operation started"); uprintf("\r\nFormat operation started");
@ -2544,13 +2545,13 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer); SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer);
SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer); SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer);
} }
if (format_thid == NULL) { if(format_thid == NULL) {
format_op_in_progress = FALSE; format_op_in_progress = FALSE;
zero_drive = FALSE; zero_drive = FALSE;
} }
break; break;
case IDC_HASH: case IDC_HASH:
if ((format_thid == NULL) && (image_path != NULL)) { if((format_thid == NULL) && (image_path != NULL)) {
FormatStatus = 0; FormatStatus = 0;
format_op_in_progress = TRUE; format_op_in_progress = TRUE;
no_confirmation_on_cancel = TRUE; no_confirmation_on_cancel = TRUE;
@ -2563,7 +2564,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
EnableControls(FALSE); EnableControls(FALSE);
InitProgress(FALSE); InitProgress(FALSE);
format_thid = CreateThread(NULL, 0, SumThread, NULL, 0, NULL); format_thid = CreateThread(NULL, 0, SumThread, NULL, 0, NULL);
if (format_thid != NULL) { if(format_thid != NULL) {
PrintInfo(0, -1); PrintInfo(0, -1);
timer = 0; timer = 0;
safe_sprintf(szTimer, sizeof(szTimer), "00:00:00"); safe_sprintf(szTimer, sizeof(szTimer), "00:00:00");
@ -2583,12 +2584,12 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
case WM_NOTIFY: case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code) { switch(((LPNMHDR)lParam)->code) {
case TBN_DROPDOWN: case TBN_DROPDOWN:
lpnmtb = (LPNMTOOLBAR)lParam; lpnmtb = (LPNMTOOLBAR)lParam;
// We only care about the language button on the language toolbar // We only care about the language button on the language toolbar
if (lpnmtb->hdr.hwndFrom == hLangToolbar if(lpnmtb->hdr.hwndFrom == hLangToolbar
&& lpnmtb->iItem == lang_button_id) { && lpnmtb->iItem == lang_button_id) {
// Get toolbar button rect and map it to actual screen pixels // Get toolbar button rect and map it to actual screen pixels
SendMessage(lpnmtb->hdr.hwndFrom, TB_GETRECT, (WPARAM)lpnmtb->iItem, (LPARAM)&LangToolbarRect); SendMessage(lpnmtb->hdr.hwndFrom, TB_GETRECT, (WPARAM)lpnmtb->iItem, (LPARAM)&LangToolbarRect);
@ -2605,12 +2606,34 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
case WM_CLOSE: case WM_CLOSE:
case WM_ENDSESSION: case WM_ENDSESSION:
if (format_thid != NULL) { if(format_thid != NULL) {
return (INT_PTR)TRUE; return (INT_PTR)TRUE;
} }
PostQuitMessage(0); PostQuitMessage(0);
break; break;
case WM_DROPFILES:
droppedFileInfo = (HDROP)wParam;
char buffer[MAX_PATH];
DragQueryFileA(droppedFileInfo, 0, buffer, MAX_PATH);
safe_free(image_path);
image_path = safe_strdup(buffer);
if(image_path == NULL) {
CreateTooltip(hSelectISO, lmprintf(MSG_173), -1);
PrintStatus(0, MSG_086);
break;
} else {
FormatStatus = 0;
if(CreateThread(NULL, 0, ISOScanThread, NULL, 0, NULL) == NULL) {
uprintf("Unable to start ISO scanning thread");
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD);
}
}
break;
case UM_PROGRESS_INIT: case UM_PROGRESS_INIT:
isMarquee = (wParam == PBS_MARQUEE); isMarquee = (wParam == PBS_MARQUEE);
if (isMarquee) { if (isMarquee) {
@ -3030,6 +3053,11 @@ relaunch:
ShowWindow(hDlg, SW_SHOWNORMAL); ShowWindow(hDlg, SW_SHOWNORMAL);
UpdateWindow(hDlg); UpdateWindow(hDlg);
// Have to call these to let the drag-n-drop through the message filter
ChangeWindowMessageFilterEx(hDlg, WM_DROPFILES, MSGFLT_ALLOW, NULL);
ChangeWindowMessageFilterEx(hDlg, WM_COPYDATA, MSGFLT_ALLOW, NULL);
ChangeWindowMessageFilterEx(hDlg, 0x49, MSGFLT_ALLOW, NULL);
// Do our own event processing and process "magic" commands // Do our own event processing and process "magic" commands
while(GetMessage(&msg, NULL, 0, 0)) { while(GetMessage(&msg, NULL, 0, 0)) {

View file

@ -32,6 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 242, 376 IDD_DIALOG DIALOGEX 12, 12, 242, 376
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
CAPTION "Rufus 2.7.825" CAPTION "Rufus 2.7.825"
FONT 8, "Segoe UI Symbol", 400, 0, 0x0 FONT 8, "Segoe UI Symbol", 400, 0, 0x0
BEGIN BEGIN
@ -79,8 +80,8 @@ CAPTION "About Rufus"
FONT 8, "Segoe UI Symbol", 400, 0, 0x0 FONT 8, "Segoe UI Symbol", 400, 0, 0x0
BEGIN BEGIN
ICON IDI_ICON,IDC_ABOUT_ICON,11,8,20,20 ICON IDI_ICON,IDC_ABOUT_ICON,11,8,20,20
CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY,45,7,268,107 CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",0x884,45,7,268,107
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_TABSTOP,46,115,267,91,WS_EX_STATICEDGE CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",WS_VSCROLL | WS_TABSTOP | 0x804,46,115,267,91,WS_EX_STATICEDGE
PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,215,50,14,WS_GROUP PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,215,50,14,WS_GROUP
PUSHBUTTON "Updates",IDC_ABOUT_UPDATES,100,215,50,14,NOT WS_VISIBLE | WS_GROUP PUSHBUTTON "Updates",IDC_ABOUT_UPDATES,100,215,50,14,NOT WS_VISIBLE | WS_GROUP
DEFPUSHBUTTON "OK",IDOK,251,215,50,14,WS_GROUP DEFPUSHBUTTON "OK",IDOK,251,215,50,14,WS_GROUP
@ -156,7 +157,7 @@ FONT 8, "Segoe UI Symbol", 400, 0, 0x0
BEGIN BEGIN
ICON IDI_ICON,IDC_ABOUT_ICON,11,8,20,20 ICON IDI_ICON,IDC_ABOUT_ICON,11,8,20,20
DEFPUSHBUTTON "Close",IDCANCEL,221,172,50,14,WS_GROUP DEFPUSHBUTTON "Close",IDCANCEL,221,172,50,14,WS_GROUP
CONTROL "",IDC_POLICY,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL | WS_TABSTOP,46,8,235,132,WS_EX_STATICEDGE CONTROL "",IDC_POLICY,"RichEdit20W",WS_VSCROLL | WS_TABSTOP | 0x804,46,8,235,132,WS_EX_STATICEDGE
GROUPBOX "Settings",IDS_UPDATE_SETTINGS_GRP,45,145,165,46 GROUPBOX "Settings",IDS_UPDATE_SETTINGS_GRP,45,145,165,46
LTEXT "Check for updates",IDS_UPDATE_FREQUENCY_TXT,51,159,76,11 LTEXT "Check for updates",IDS_UPDATE_FREQUENCY_TXT,51,159,76,11
COMBOBOX IDC_UPDATE_FREQUENCY,133,155,66,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_UPDATE_FREQUENCY,133,155,66,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@ -361,11 +362,8 @@ END
// Icon with lowest ID value placed first to ensure application icon // Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems. // remains consistent on all systems.
IDI_ICON ICON "../res/rufus.ico" IDI_ICON ICON "../res/rufus.ico"
IDI_UP ICON "../res/up.ico" IDI_UP ICON "../res/up.ico"
IDI_DOWN ICON "../res/down.ico" IDI_DOWN ICON "../res/down.ico"
#endif // Neutral resources #endif // Neutral resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////