mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[ui] UI improvements
* new controls * label display and smart selection * popup warning on format operation * also fixed conflicting name for WDK build.cmd * also fixed tooltip not properly associated with combo item due to combo list being sorted
This commit is contained in:
parent
510fde1133
commit
53f236dffe
5 changed files with 104 additions and 54 deletions
18
resource.h
18
resource.h
|
@ -13,18 +13,22 @@
|
||||||
#define IDC_CLOSE 1004
|
#define IDC_CLOSE 1004
|
||||||
#define IDC_CAPACITY 1005
|
#define IDC_CAPACITY 1005
|
||||||
#define IDC_ALLOCSIZE 1006
|
#define IDC_ALLOCSIZE 1006
|
||||||
#define IDC_ABOUT_ICON 1007
|
|
||||||
#define IDC_RUFUS_BOLD 1008
|
|
||||||
#define IDC_STATUS 1009
|
#define IDC_STATUS 1009
|
||||||
#define IDC_ABOUT 1010
|
#define IDC_ABOUT 1010
|
||||||
|
#define IDC_LABEL 1011
|
||||||
|
#define IDC_QUICKFORMAT 1012
|
||||||
|
#define IDC_DOSSTARTUP 1013
|
||||||
|
#define IDC_PROGRESS 1014
|
||||||
#define IDC_ABOUT_LICENSE 1030
|
#define IDC_ABOUT_LICENSE 1030
|
||||||
#define IDC_ABOUT_COPYRIGHTS 1031
|
#define IDC_ABOUT_ICON 1031
|
||||||
#define IDC_ABOUT_RUFUS_URL 1032
|
#define IDC_RUFUS_BOLD 1032
|
||||||
#define IDC_ABOUT_BUG_URL 1033
|
#define IDC_ABOUT_COPYRIGHTS 1033
|
||||||
|
#define IDC_ABOUT_RUFUS_URL 1034
|
||||||
|
#define IDC_ABOUT_BUG_URL 1035
|
||||||
|
#define IDC_LICENSE_TEXT 1036
|
||||||
#define IDC_NOTIFICATION_ICON 1040
|
#define IDC_NOTIFICATION_ICON 1040
|
||||||
#define IDC_NOTIFICATION_TEXT 1041
|
#define IDC_NOTIFICATION_TEXT 1041
|
||||||
#define IDC_NOTIFICATION_LINE 1042
|
#define IDC_NOTIFICATION_LINE 1042
|
||||||
#define IDC_LICENSE_TEXT 1050
|
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
|
@ -33,7 +37,7 @@
|
||||||
#define _APS_NO_MFC 1
|
#define _APS_NO_MFC 1
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 106
|
#define _APS_NEXT_RESOURCE_VALUE 106
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1051
|
#define _APS_NEXT_CONTROL_VALUE 1043
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
110
rufus.c
110
rufus.c
|
@ -31,6 +31,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <math.h>
|
||||||
#include <commctrl.h>
|
#include <commctrl.h>
|
||||||
#include <setupapi.h>
|
#include <setupapi.h>
|
||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
|
@ -60,8 +61,19 @@ char szFolderPath[MAX_PATH];
|
||||||
HWND hStatus;
|
HWND hStatus;
|
||||||
float fScale = 1.0f;
|
float fScale = 1.0f;
|
||||||
|
|
||||||
static HWND hDeviceList, hCapacity, hFileSystem, hDeviceToolTip = NULL;
|
BOOL bBootable;
|
||||||
static StrArray DriveID;
|
BOOL bQuickFormat;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
DWORD DeviceNumber;
|
||||||
|
LONGLONG DiskSize;
|
||||||
|
LONGLONG PartitionSize;
|
||||||
|
DWORD FirstSector;
|
||||||
|
char FSType[32];
|
||||||
|
} SelectedDrive;
|
||||||
|
|
||||||
|
static HWND hDeviceList, hCapacity, hFileSystem, hLabel, hDeviceToolTip = NULL;
|
||||||
|
static StrArray DriveID, DriveLabel;
|
||||||
|
|
||||||
#ifdef RUFUS_DEBUG
|
#ifdef RUFUS_DEBUG
|
||||||
void _uprintf(const char *format, ...)
|
void _uprintf(const char *format, ...)
|
||||||
|
@ -270,15 +282,15 @@ static BOOL GetDriveHandle(DWORD DriveIndex, HANDLE* hDrive, char* DriveLetter,
|
||||||
/*
|
/*
|
||||||
* Return the drive letter and volume label
|
* Return the drive letter and volume label
|
||||||
*/
|
*/
|
||||||
static BOOL GetDriveLabel(DWORD num, char* letter, char** label)
|
static BOOL GetDriveLabel(DWORD DriveIndex, char* letter, char** label)
|
||||||
{
|
{
|
||||||
HANDLE hDrive;
|
HANDLE hDrive;
|
||||||
char DrivePath[] = "#:\\";
|
char DrivePath[] = "#:\\";
|
||||||
char volume_label[MAX_PATH+1];
|
static char volume_label[MAX_PATH+1];
|
||||||
|
|
||||||
*label = "NO_LABEL";
|
*label = STR_NO_LABEL;
|
||||||
|
|
||||||
if (!GetDriveHandle(num, &hDrive, DrivePath, FALSE))
|
if (!GetDriveHandle(DriveIndex, &hDrive, DrivePath, FALSE))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
safe_closehandle(hDrive);
|
safe_closehandle(hDrive);
|
||||||
*letter = DrivePath[0];
|
*letter = DrivePath[0];
|
||||||
|
@ -291,9 +303,9 @@ static BOOL GetDriveLabel(DWORD num, char* letter, char** label)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the drive properties (size, FS)
|
* Fill the drive properties (size, FS, etc)
|
||||||
*/
|
*/
|
||||||
static BOOL GetDriveInfo(DWORD num, LONGLONG* DriveSize, char* FSType, DWORD FSTypeSize)
|
static BOOL GetDriveInfo(void)
|
||||||
{
|
{
|
||||||
BOOL r;
|
BOOL r;
|
||||||
HANDLE hDrive;
|
HANDLE hDrive;
|
||||||
|
@ -306,9 +318,9 @@ static BOOL GetDriveInfo(DWORD num, LONGLONG* DriveSize, char* FSType, DWORD FST
|
||||||
char DrivePath[] = "#:\\";
|
char DrivePath[] = "#:\\";
|
||||||
DWORD i, nb_partitions = 0;
|
DWORD i, nb_partitions = 0;
|
||||||
|
|
||||||
*DriveSize = 0;
|
SelectedDrive.DiskSize = 0;
|
||||||
|
|
||||||
if (!GetDriveHandle(num, &hDrive, DrivePath, FALSE))
|
if (!GetDriveHandle(SelectedDrive.DeviceNumber, &hDrive, DrivePath, FALSE))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
r = DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
|
r = DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
|
||||||
|
@ -318,7 +330,7 @@ static BOOL GetDriveInfo(DWORD num, LONGLONG* DriveSize, char* FSType, DWORD FST
|
||||||
safe_closehandle(hDrive);
|
safe_closehandle(hDrive);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
*DriveSize = DiskGeometry->DiskSize.QuadPart;
|
SelectedDrive.DiskSize = DiskGeometry->DiskSize.QuadPart;
|
||||||
uprintf("Cylinders: %lld, TracksPerCylinder: %d, SectorsPerTrack: %d, BytesPerSector: %d\n",
|
uprintf("Cylinders: %lld, TracksPerCylinder: %d, SectorsPerTrack: %d, BytesPerSector: %d\n",
|
||||||
DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder,
|
DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder,
|
||||||
DiskGeometry->Geometry.SectorsPerTrack, DiskGeometry->Geometry.BytesPerSector);
|
DiskGeometry->Geometry.SectorsPerTrack, DiskGeometry->Geometry.BytesPerSector);
|
||||||
|
@ -354,9 +366,9 @@ static BOOL GetDriveInfo(DWORD num, LONGLONG* DriveSize, char* FSType, DWORD FST
|
||||||
|
|
||||||
safe_closehandle(hDrive);
|
safe_closehandle(hDrive);
|
||||||
|
|
||||||
if (!GetVolumeInformationA(DrivePath, NULL, 0, NULL, NULL, NULL, FSType, FSTypeSize)) {
|
if (!GetVolumeInformationA(DrivePath, NULL, 0, NULL, NULL, NULL,
|
||||||
safe_sprintf(FSType, FSTypeSize, "Non Windows (Please Select)");
|
SelectedDrive.FSType, sizeof(SelectedDrive.FSType))) {
|
||||||
// uprintf("GetVolumeInformation (Properties) failed: %s\n", WindowsErrorString());
|
safe_sprintf(SelectedDrive.FSType, sizeof(SelectedDrive.FSType), "Non Windows (Please Select)");
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -365,26 +377,30 @@ static BOOL GetDriveInfo(DWORD num, LONGLONG* DriveSize, char* FSType, DWORD FST
|
||||||
/*
|
/*
|
||||||
* Populate the UI properties
|
* Populate the UI properties
|
||||||
*/
|
*/
|
||||||
static BOOL PopulateProperties(int index)
|
static BOOL PopulateProperties(int ComboIndex)
|
||||||
{
|
{
|
||||||
double HumanReadableSize;
|
double HumanReadableSize;
|
||||||
LONGLONG DiskSize;
|
char capacity[64];
|
||||||
DWORD DeviceNumber;
|
char *suffix[] = { "KB", "MB", "GB", "TB", "PB"};
|
||||||
char capacity[64], FSType[32];
|
char proposed_label[16], no_label[] = STR_NO_LABEL;
|
||||||
char* suffix[] = { "KB", "MB", "GB", "TB", "PB"};
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
IGNORE_RETVAL(ComboBox_ResetContent(hCapacity));
|
IGNORE_RETVAL(ComboBox_ResetContent(hCapacity));
|
||||||
IGNORE_RETVAL(ComboBox_ResetContent(hFileSystem));
|
IGNORE_RETVAL(ComboBox_ResetContent(hFileSystem));
|
||||||
if (index < 0) {
|
SetWindowTextA(hLabel, "");
|
||||||
|
DestroyTooltip(hDeviceToolTip);
|
||||||
|
hDeviceToolTip = NULL;
|
||||||
|
memset(&SelectedDrive, 0, sizeof(SelectedDrive));
|
||||||
|
|
||||||
|
if (ComboIndex < 0) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceNumber = (DWORD)ComboBox_GetItemData(hDeviceList, index);
|
SelectedDrive.DeviceNumber = (DWORD)ComboBox_GetItemData(hDeviceList, ComboIndex);
|
||||||
if (!GetDriveInfo(DeviceNumber, &DiskSize, FSType, sizeof(FSType)))
|
if (!GetDriveInfo())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
HumanReadableSize = (double)DiskSize;
|
HumanReadableSize = (double)SelectedDrive.DiskSize;
|
||||||
for (i=0; i<ARRAYSIZE(suffix); i++) {
|
for (i=0; i<ARRAYSIZE(suffix); i++) {
|
||||||
HumanReadableSize /= 1024.0;
|
HumanReadableSize /= 1024.0;
|
||||||
if (HumanReadableSize < 512.0) {
|
if (HumanReadableSize < 512.0) {
|
||||||
|
@ -394,8 +410,19 @@ static BOOL PopulateProperties(int index)
|
||||||
}
|
}
|
||||||
IGNORE_RETVAL(ComboBox_AddStringU(hCapacity, capacity));
|
IGNORE_RETVAL(ComboBox_AddStringU(hCapacity, capacity));
|
||||||
IGNORE_RETVAL(ComboBox_SetCurSel(hCapacity, 0));
|
IGNORE_RETVAL(ComboBox_SetCurSel(hCapacity, 0));
|
||||||
IGNORE_RETVAL(ComboBox_AddStringU(hFileSystem, FSType));
|
IGNORE_RETVAL(ComboBox_AddStringU(hFileSystem, SelectedDrive.FSType));
|
||||||
IGNORE_RETVAL(ComboBox_SetCurSel(hFileSystem, 0));
|
IGNORE_RETVAL(ComboBox_SetCurSel(hFileSystem, 0));
|
||||||
|
hDeviceToolTip = CreateTooltip(hDeviceList, DriveID.Table[ComboIndex], -1);
|
||||||
|
// If no existing label is available, propose one according to the size (eg: "256MB", "8GB")
|
||||||
|
if (safe_strcmp(no_label, DriveLabel.Table[ComboIndex]) == 0) {
|
||||||
|
if (fabs(floor(HumanReadableSize + 0.5) - HumanReadableSize) < 0.15) {
|
||||||
|
safe_sprintf(proposed_label, sizeof(proposed_label), "%0.0f%s", floor(HumanReadableSize + 0.5), suffix[i]);
|
||||||
|
SetWindowTextA(hLabel, proposed_label);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
SetWindowTextA(hLabel, DriveLabel.Table[ComboIndex]);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,6 +548,7 @@ static BOOL GetUSBDevices(void)
|
||||||
|
|
||||||
IGNORE_RETVAL(ComboBox_ResetContent(hDeviceList));
|
IGNORE_RETVAL(ComboBox_ResetContent(hDeviceList));
|
||||||
StrArrayClear(&DriveID);
|
StrArrayClear(&DriveID);
|
||||||
|
StrArrayClear(&DriveLabel);
|
||||||
|
|
||||||
dev_info = SetupDiGetClassDevsA(&GUID_DEVINTERFACE_DISK, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
|
dev_info = SetupDiGetClassDevsA(&GUID_DEVINTERFACE_DISK, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
|
||||||
if (dev_info == INVALID_HANDLE_VALUE) {
|
if (dev_info == INVALID_HANDLE_VALUE) {
|
||||||
|
@ -546,7 +574,6 @@ static BOOL GetUSBDevices(void)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
uprintf("Found drive '%s'\n", buffer);
|
uprintf("Found drive '%s'\n", buffer);
|
||||||
StrArrayAdd(&DriveID, buffer);
|
|
||||||
|
|
||||||
devint_data.cbSize = sizeof(devint_data);
|
devint_data.cbSize = sizeof(devint_data);
|
||||||
hDrive = INVALID_HANDLE_VALUE;
|
hDrive = INVALID_HANDLE_VALUE;
|
||||||
|
@ -595,9 +622,15 @@ static BOOL GetUSBDevices(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetDriveLabel(device_number.DeviceNumber + DRIVE_INDEX_MIN, &drive_letter, &label)) {
|
if (GetDriveLabel(device_number.DeviceNumber + DRIVE_INDEX_MIN, &drive_letter, &label)) {
|
||||||
safe_sprintf(entry, sizeof(entry), "%s (%c:)\n", label, drive_letter);
|
// Must ensure that the combo box is UNSORTED for indexes to be the same
|
||||||
|
StrArrayAdd(&DriveID, buffer);
|
||||||
|
StrArrayAdd(&DriveLabel, label);
|
||||||
|
safe_sprintf(entry, sizeof(entry), "%s (%c:)", label, drive_letter);
|
||||||
IGNORE_RETVAL(ComboBox_SetItemData(hDeviceList, ComboBox_AddStringU(hDeviceList, entry),
|
IGNORE_RETVAL(ComboBox_SetItemData(hDeviceList, ComboBox_AddStringU(hDeviceList, entry),
|
||||||
device_number.DeviceNumber + DRIVE_INDEX_MIN));
|
device_number.DeviceNumber + DRIVE_INDEX_MIN));
|
||||||
|
safe_closehandle(hDrive);
|
||||||
|
safe_free(devint_detail_data);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -615,6 +648,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
HDC hDC;
|
HDC hDC;
|
||||||
DRAWITEMSTRUCT* pDI;
|
DRAWITEMSTRUCT* pDI;
|
||||||
int nDeviceIndex;
|
int nDeviceIndex;
|
||||||
|
char str[MAX_PATH], tmp[128];
|
||||||
|
|
||||||
switch (message) {
|
switch (message) {
|
||||||
|
|
||||||
|
@ -627,6 +661,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
hDeviceList = GetDlgItem(hDlg, IDC_DEVICE);
|
hDeviceList = GetDlgItem(hDlg, IDC_DEVICE);
|
||||||
hCapacity = GetDlgItem(hDlg, IDC_CAPACITY);
|
hCapacity = GetDlgItem(hDlg, IDC_CAPACITY);
|
||||||
hFileSystem = GetDlgItem(hDlg, IDC_FILESYSTEM);
|
hFileSystem = GetDlgItem(hDlg, IDC_FILESYSTEM);
|
||||||
|
hLabel = GetDlgItem(hDlg, IDC_LABEL);
|
||||||
// High DPI scaling
|
// High DPI scaling
|
||||||
hDC = GetDC(hDlg);
|
hDC = GetDC(hDlg);
|
||||||
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
|
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
|
||||||
|
@ -635,7 +670,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
CreateStatusBar();
|
CreateStatusBar();
|
||||||
// Display the version in the right area of the status bar
|
// Display the version in the right area of the status bar
|
||||||
SendMessageA(GetDlgItem(hDlg, IDC_STATUS), SB_SETTEXTA, SBT_OWNERDRAW | 1, (LPARAM)APP_VERSION);
|
SendMessageA(GetDlgItem(hDlg, IDC_STATUS), SB_SETTEXTA, SBT_OWNERDRAW | 1, (LPARAM)APP_VERSION);
|
||||||
StrArrayCreate(&DriveID, 16);
|
StrArrayCreate(&DriveID, MAX_DRIVES);
|
||||||
|
StrArrayCreate(&DriveLabel, MAX_DRIVES);
|
||||||
GetUSBDevices();
|
GetUSBDevices();
|
||||||
return (INT_PTR)TRUE;
|
return (INT_PTR)TRUE;
|
||||||
|
|
||||||
|
@ -658,29 +694,31 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
case IDCANCEL:
|
case IDCANCEL:
|
||||||
PostQuitMessage(0);
|
PostQuitMessage(0);
|
||||||
StrArrayDestroy(&DriveID);
|
StrArrayDestroy(&DriveID);
|
||||||
|
StrArrayDestroy(&DriveLabel);
|
||||||
DestroyAllTooltips();
|
DestroyAllTooltips();
|
||||||
EndDialog(hDlg, 0);
|
EndDialog(hDlg, 0);
|
||||||
break;
|
break;
|
||||||
case IDC_ABOUT:
|
case IDC_ABOUT:
|
||||||
CreateAboutBox();
|
CreateAboutBox();
|
||||||
break;
|
break;
|
||||||
case IDC_DEVICE: // dropdown: device description
|
case IDC_DEVICE:
|
||||||
switch (HIWORD(wParam)) {
|
switch (HIWORD(wParam)) {
|
||||||
case CBN_SELCHANGE:
|
case CBN_SELCHANGE:
|
||||||
nDeviceIndex = ComboBox_GetCurSel(hDeviceList);
|
StatusPrintf("%d device%s found.", ComboBox_GetCount(hDeviceList),
|
||||||
if (nDeviceIndex != CB_ERR) {
|
(ComboBox_GetCount(hDeviceList)!=1)?"s":"");
|
||||||
PopulateProperties(ComboBox_GetCurSel(hDeviceList));
|
PopulateProperties(ComboBox_GetCurSel(hDeviceList));
|
||||||
// Display a tooltip with the OS reported description
|
|
||||||
DestroyTooltip(hDeviceToolTip);
|
|
||||||
hDeviceToolTip = CreateTooltip(hDeviceList, DriveID.Table[nDeviceIndex], -1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IDC_START:
|
case IDC_START:
|
||||||
nDeviceIndex = ComboBox_GetCurSel(hDeviceList);
|
nDeviceIndex = ComboBox_GetCurSel(hDeviceList);
|
||||||
if (nDeviceIndex != CB_ERR) {
|
if (nDeviceIndex != CB_ERR) {
|
||||||
FormatDrive(ComboBox_GetItemData(hDeviceList, nDeviceIndex));
|
GetWindowTextA(hDeviceList, tmp, sizeof(tmp));
|
||||||
|
safe_sprintf(str, sizeof(str), "WARNING: ALL DATA ON DEVICE %s\r\nWILL BE ERASED!\r\n"
|
||||||
|
"Do you want to continue with this operation?", tmp);
|
||||||
|
if (MessageBoxA(hMainDialog, str, "Rufus", MB_OKCANCEL|MB_ICONWARNING) == IDOK) {
|
||||||
|
FormatDrive(ComboBox_GetItemData(hDeviceList, nDeviceIndex));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
2
rufus.h
2
rufus.h
|
@ -21,8 +21,10 @@
|
||||||
#define RUFUS_DEBUG
|
#define RUFUS_DEBUG
|
||||||
|
|
||||||
#define APP_VERSION "Rufus v1.0.0.1"
|
#define APP_VERSION "Rufus v1.0.0.1"
|
||||||
|
#define STR_NO_LABEL "NO_LABEL"
|
||||||
#define DRIVE_INDEX_MIN 0x80
|
#define DRIVE_INDEX_MIN 0x80
|
||||||
#define DRIVE_INDEX_MAX 0xC0
|
#define DRIVE_INDEX_MAX 0xC0
|
||||||
|
#define MAX_DRIVES 16
|
||||||
#define MAX_TOOLTIPS 16
|
#define MAX_TOOLTIPS 16
|
||||||
#define WHITE RGB(255,255,255)
|
#define WHITE RGB(255,255,255)
|
||||||
#define SEPARATOR_GREY RGB(223,223,223)
|
#define SEPARATOR_GREY RGB(223,223,223)
|
||||||
|
|
28
rufus.rc
28
rufus.rc
|
@ -33,17 +33,23 @@ EXSTYLE WS_EX_APPWINDOW
|
||||||
CAPTION "Rufus"
|
CAPTION "Rufus"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,102,223,50,14
|
DEFPUSHBUTTON "Start",IDC_START,102,224,50,14
|
||||||
PUSHBUTTON "Close",IDCANCEL,156,223,50,14
|
PUSHBUTTON "Close",IDCANCEL,156,224,50,14
|
||||||
COMBOBOX IDC_DEVICE,16,20,190,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_DEVICE,16,18,190,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
LTEXT "Device",IDC_STATIC,17,8,22,8
|
CONTROL "&Device",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,17,7,22,8
|
||||||
COMBOBOX IDC_FILESYSTEM,16,80,190,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_FILESYSTEM,16,76,190,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||||
LTEXT "File System",IDC_STATIC,17,68,51,10
|
LTEXT "&File system",IDC_STATIC,17,65,51,10
|
||||||
COMBOBOX IDC_CAPACITY,16,50,190,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_CAPACITY,16,47,190,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||||
LTEXT "Capacity",IDC_STATIC,17,38,29,8
|
LTEXT "Ca&pacity",IDC_STATIC,17,36,29,8
|
||||||
COMBOBOX IDC_ALLOCSIZE,16,111,190,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_ALLOCSIZE,16,105,190,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||||
LTEXT "Allocation unit size",IDC_STATIC,17,99,105,10
|
LTEXT "&Allocation unit size",IDC_STATIC,17,94,105,10
|
||||||
PUSHBUTTON "About...",IDC_ABOUT,16,223,50,14
|
PUSHBUTTON "About...",IDC_ABOUT,16,224,50,14
|
||||||
|
GROUPBOX "Format Options",IDC_STATIC,15,150,189,40
|
||||||
|
EDITTEXT IDC_LABEL,15,132,190,13,ES_AUTOHSCROLL
|
||||||
|
CONTROL "&Quick Format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,21,162,58,10
|
||||||
|
CONTROL "Create an &MS-DOS startup disk",IDC_DOSSTARTUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,21,174,115,10
|
||||||
|
LTEXT "New volume &label",IDC_STATIC,17,122,105,10
|
||||||
|
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,15,198,189,9
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ABOUTBOX DIALOGEX 0, 0, 287, 195
|
IDD_ABOUTBOX DIALOGEX 0, 0, 287, 195
|
||||||
|
|
Loading…
Reference in a new issue