mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[ui] use a toolbar button for the checksum
* Also fix tabbing order for controls * Also provide the name of the image in the checksum report
This commit is contained in:
		
							parent
							
								
									957bb9c495
								
							
						
					
					
						commit
						c7c83a16ed
					
				
					 8 changed files with 118 additions and 85 deletions
				
			
		|  | @ -517,8 +517,8 @@ t MSG_267 "Applying Windows image: %0.1f%% completed" | ||||||
| t MSG_268 "Applying Windows image..." | t MSG_268 "Applying Windows image..." | ||||||
| t MSG_269 "Preserve timestamps" | t MSG_269 "Preserve timestamps" | ||||||
| t MSG_270 "USB debug" | t MSG_270 "USB debug" | ||||||
| t MSG_271 "Computing image checksum: %0.1f%% completed" | t MSG_271 "Computing image checksums: %0.1f%% completed" | ||||||
| t MSG_272 "Click here to compute the SHA-1 and MD5 checksums for the selected image" | t MSG_272 "Compute the SHA1 and MD5 checksums for the selected image" | ||||||
| t MSG_273 "Change the application language" | t MSG_273 "Change the application language" | ||||||
| 
 | 
 | ||||||
| ################################################################################ | ################################################################################ | ||||||
|  |  | ||||||
|  | @ -523,18 +523,27 @@ static void md5_final(MD5_CONTEXT *ctx) | ||||||
|  */ |  */ | ||||||
| INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | ||||||
| { | { | ||||||
|  | 	int i; | ||||||
| 	HFONT hFont; | 	HFONT hFont; | ||||||
|  | 	HDC hDC; | ||||||
|  | 
 | ||||||
| 	switch (message) { | 	switch (message) { | ||||||
| 	case WM_INITDIALOG: | 	case WM_INITDIALOG: | ||||||
| 		apply_localization(IDD_CHECKSUM, hDlg); | 		apply_localization(IDD_CHECKSUM, hDlg); | ||||||
| 		// Create the font and brush for the Info edit box
 | 		hDC = GetDC(hDlg); | ||||||
| 		hFont = CreateFontA(-MulDiv(9, GetDeviceCaps(GetDC(hDlg), LOGPIXELSY), 72), | 		hFont = CreateFontA(-MulDiv(9, GetDeviceCaps(hDC, LOGPIXELSY), 72), | ||||||
| 			0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, | 			0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, | ||||||
| 			0, 0, PROOF_QUALITY, 0, "Courier New"); | 			0, 0, PROOF_QUALITY, 0, "Courier New"); | ||||||
|  | 		if (hDC != NULL) | ||||||
|  | 			ReleaseDC(hDlg, hDC); | ||||||
| 		SendDlgItemMessageA(hDlg, IDC_MD5, WM_SETFONT, (WPARAM)hFont, TRUE); | 		SendDlgItemMessageA(hDlg, IDC_MD5, WM_SETFONT, (WPARAM)hFont, TRUE); | ||||||
| 		SendDlgItemMessageA(hDlg, IDC_SHA1, WM_SETFONT, (WPARAM)hFont, TRUE); | 		SendDlgItemMessageA(hDlg, IDC_SHA1, WM_SETFONT, (WPARAM)hFont, TRUE); | ||||||
| 		SetWindowTextA(GetDlgItem(hDlg, IDC_MD5), md5str); | 		SetWindowTextA(GetDlgItem(hDlg, IDC_MD5), md5str); | ||||||
| 		SetWindowTextA(GetDlgItem(hDlg, IDC_SHA1), sha1str); | 		SetWindowTextA(GetDlgItem(hDlg, IDC_SHA1), sha1str); | ||||||
|  | 		for (i=(int)safe_strlen(image_path); (i>0)&&(image_path[i]!='\\'); i--); | ||||||
|  | 		SetWindowTextU(hDlg, &image_path[i+1]); | ||||||
|  | 		// Set focus on the OK button
 | ||||||
|  | 		SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hDlg, IDOK), TRUE); | ||||||
| 		CenterDialog(hDlg); | 		CenterDialog(hDlg); | ||||||
| 		break; | 		break; | ||||||
| 	case WM_COMMAND: | 	case WM_COMMAND: | ||||||
|  | @ -543,6 +552,8 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM | ||||||
| 		case IDCANCEL: | 		case IDCANCEL: | ||||||
| 			reset_localization(IDD_CHECKSUM); | 			reset_localization(IDD_CHECKSUM); | ||||||
| 			EndDialog(hDlg, LOWORD(wParam)); | 			EndDialog(hDlg, LOWORD(wParam)); | ||||||
|  | 			// Reset focus to our toolbar
 | ||||||
|  | 			PostMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)hStatusToolbar, TRUE); | ||||||
| 			return (INT_PTR)TRUE; | 			return (INT_PTR)TRUE; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -57,6 +57,7 @@ const loc_control_id control_id[] = { | ||||||
| 	LOC_CTRL(IDC_DISK_ID), | 	LOC_CTRL(IDC_DISK_ID), | ||||||
| 	LOC_CTRL(IDC_EXTRA_PARTITION), | 	LOC_CTRL(IDC_EXTRA_PARTITION), | ||||||
| 	LOC_CTRL(IDC_ENABLE_FIXED_DISKS), | 	LOC_CTRL(IDC_ENABLE_FIXED_DISKS), | ||||||
|  | 	LOC_CTRL(IDC_STATUS_TOOLBAR), | ||||||
| 	LOC_CTRL(IDC_HASH), | 	LOC_CTRL(IDC_HASH), | ||||||
| 	LOC_CTRL(IDC_ABOUT_LICENSE), | 	LOC_CTRL(IDC_ABOUT_LICENSE), | ||||||
| 	LOC_CTRL(IDC_ABOUT_ICON), | 	LOC_CTRL(IDC_ABOUT_ICON), | ||||||
|  |  | ||||||
|  | @ -95,7 +95,8 @@ | ||||||
| #define IDC_DISK_ID                     1022 | #define IDC_DISK_ID                     1022 | ||||||
| #define IDC_EXTRA_PARTITION             1023 | #define IDC_EXTRA_PARTITION             1023 | ||||||
| #define IDC_ENABLE_FIXED_DISKS          1024 | #define IDC_ENABLE_FIXED_DISKS          1024 | ||||||
| #define IDC_HASH                        1025 | #define IDC_STATUS_TOOLBAR              1025 | ||||||
|  | #define IDC_HASH                        1026 | ||||||
| #define IDC_ABOUT_LICENSE               1030 | #define IDC_ABOUT_LICENSE               1030 | ||||||
| #define IDC_ABOUT_ICON                  1031 | #define IDC_ABOUT_ICON                  1031 | ||||||
| #define IDC_ABOUT_UPDATES               1032 | #define IDC_ABOUT_UPDATES               1032 | ||||||
|  |  | ||||||
							
								
								
									
										43
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										43
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -103,7 +103,6 @@ static BOOL log_displayed = FALSE; | ||||||
| static BOOL iso_provided = FALSE; | static BOOL iso_provided = FALSE; | ||||||
| static BOOL user_notified = FALSE; | static BOOL user_notified = FALSE; | ||||||
| static BOOL relaunch = FALSE; | static BOOL relaunch = FALSE; | ||||||
| static BOOL hash_enabled = FALSE; |  | ||||||
| extern BOOL force_large_fat32, enable_iso, enable_joliet, enable_rockridge, enable_ntfs_compression, preserve_timestamps, usb_debug; | extern BOOL force_large_fat32, enable_iso, enable_joliet, enable_rockridge, enable_ntfs_compression, preserve_timestamps, usb_debug; | ||||||
| extern uint8_t* grub2_buf; | extern uint8_t* grub2_buf; | ||||||
| extern long grub2_len; | extern long grub2_len; | ||||||
|  | @ -132,7 +131,7 @@ float fScale = 1.0f; | ||||||
| int default_fs; | int default_fs; | ||||||
| uint32_t dur_mins, dur_secs; | uint32_t dur_mins, dur_secs; | ||||||
| HWND hDeviceList, hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog = NULL; | HWND hDeviceList, hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog = NULL; | ||||||
| HWND hLogDlg = NULL, hProgress = NULL, hInfo, hDiskID, hHash; | HWND hLogDlg = NULL, hProgress = NULL, hInfo, hDiskID, hStatusToolbar; | ||||||
| BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, detect_fakes = TRUE, mbr_selected_by_user = FALSE; | BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, detect_fakes = TRUE, mbr_selected_by_user = FALSE; | ||||||
| BOOL iso_op_in_progress = FALSE, format_op_in_progress = FALSE, right_to_left_mode = FALSE; | BOOL iso_op_in_progress = FALSE, format_op_in_progress = FALSE, right_to_left_mode = FALSE; | ||||||
| BOOL enable_HDDs = FALSE, advanced_mode = TRUE, force_update = FALSE, use_fake_units = TRUE; | BOOL enable_HDDs = FALSE, advanced_mode = TRUE, force_update = FALSE, use_fake_units = TRUE; | ||||||
|  | @ -805,14 +804,6 @@ void UpdateProgress(int op, float percent) | ||||||
| 	SetTaskbarProgressValue(pos, MAX_PROGRESS); | 	SetTaskbarProgressValue(pos, MAX_PROGRESS); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void EnableHash(BOOL bEnable) |  | ||||||
| { |  | ||||||
| 	// Can't use EnableWindow() for hHash as it overrides our WM_PAINT suppression
 |  | ||||||
| 	// and we'd end up with an out of place disabled button
 |  | ||||||
| 	hash_enabled = bEnable; |  | ||||||
| 	SendMessage(hStatus, SB_SETTEXTW, SBT_OWNERDRAW | SB_SECTION_MIDDLE, 0); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /*
 | /*
 | ||||||
|  * Toggle controls according to operation |  * Toggle controls according to operation | ||||||
|  */ |  */ | ||||||
|  | @ -827,7 +818,7 @@ static void EnableControls(BOOL bEnable) | ||||||
| 	EnableWindow(hNBPasses, bEnable); | 	EnableWindow(hNBPasses, bEnable); | ||||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_ADVANCED), bEnable); | 	EnableWindow(GetDlgItem(hMainDialog, IDC_ADVANCED), bEnable); | ||||||
| 	EnableWindow(hLangToolbar, bEnable); | 	EnableWindow(hLangToolbar, bEnable); | ||||||
| 	EnableHash(bEnable); | 	EnableWindow(hStatusToolbar, bEnable); | ||||||
| 	EnableWindow(GetDlgItem(hMainDialog, IDC_ENABLE_FIXED_DISKS), bEnable); | 	EnableWindow(GetDlgItem(hMainDialog, IDC_ENABLE_FIXED_DISKS), bEnable); | ||||||
| 	SetDlgItemTextU(hMainDialog, IDCANCEL, lmprintf(bEnable?MSG_006:MSG_007)); | 	SetDlgItemTextU(hMainDialog, IDCANCEL, lmprintf(bEnable?MSG_006:MSG_007)); | ||||||
| 	if (selection_default == BT_IMG) | 	if (selection_default == BT_IMG) | ||||||
|  | @ -860,6 +851,7 @@ BOOL CALLBACK LogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) | ||||||
| 		// Set the font to Unicode so that we can display anything
 | 		// Set the font to Unicode so that we can display anything
 | ||||||
| 		hdc = GetDC(NULL); | 		hdc = GetDC(NULL); | ||||||
| 		lfHeight = -MulDiv(8, GetDeviceCaps(hdc, LOGPIXELSY), 72); | 		lfHeight = -MulDiv(8, GetDeviceCaps(hdc, LOGPIXELSY), 72); | ||||||
|  | 		if (hdc != NULL) | ||||||
| 			ReleaseDC(NULL, hdc); | 			ReleaseDC(NULL, hdc); | ||||||
| 		hf = CreateFontA(lfHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, | 		hf = CreateFontA(lfHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, | ||||||
| 			DEFAULT_CHARSET, 0, 0, PROOF_QUALITY, 0, "Arial Unicode MS"); | 			DEFAULT_CHARSET, 0, 0, PROOF_QUALITY, 0, "Arial Unicode MS"); | ||||||
|  | @ -1022,6 +1014,7 @@ DWORD WINAPI ISOScanThread(LPVOID param) | ||||||
| 		SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0); | 		SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0); | ||||||
| 		PrintInfoDebug(0, MSG_203); | 		PrintInfoDebug(0, MSG_203); | ||||||
| 		safe_free(image_path); | 		safe_free(image_path); | ||||||
|  | 		EnableWindow(hStatusToolbar, FALSE); | ||||||
| 		PrintStatus(0, MSG_086); | 		PrintStatus(0, MSG_086); | ||||||
| 		SetMBRProps(); | 		SetMBRProps(); | ||||||
| 		goto out; | 		goto out; | ||||||
|  | @ -1038,8 +1031,9 @@ DWORD WINAPI ISOScanThread(LPVOID param) | ||||||
| 	if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe)) && (!IS_GRUB(iso_report)) | 	if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe)) && (!IS_GRUB(iso_report)) | ||||||
| 	  && (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.has_kolibrios) && (!iso_report.is_bootable_img)) ) { | 	  && (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.has_kolibrios) && (!iso_report.is_bootable_img)) ) { | ||||||
| 		PrintInfo(0, MSG_081); | 		PrintInfo(0, MSG_081); | ||||||
| 		MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); |  | ||||||
| 		safe_free(image_path); | 		safe_free(image_path); | ||||||
|  | 		EnableWindow(hStatusToolbar, FALSE); | ||||||
|  | 		MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); | ||||||
| 		PrintStatus(0, MSG_086); | 		PrintStatus(0, MSG_086); | ||||||
| 		SetMBRProps(); | 		SetMBRProps(); | ||||||
| 	} else { | 	} else { | ||||||
|  | @ -1113,7 +1107,7 @@ static void ToggleAdvanced(void) | ||||||
| 
 | 
 | ||||||
| 	// Move the controls up or down
 | 	// Move the controls up or down
 | ||||||
| 	MoveCtrlY(hMainDialog, IDC_STATUS, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_STATUS, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_HASH, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_STATUS_TOOLBAR, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_START, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_START, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_INFO, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_INFO, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_PROGRESS, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_PROGRESS, dialog_shift); | ||||||
|  | @ -1136,7 +1130,7 @@ static void ToggleAdvanced(void) | ||||||
| 	GetWindowRect(hLog, &rect); | 	GetWindowRect(hLog, &rect); | ||||||
| 	point.x = (rect.right - rect.left); | 	point.x = (rect.right - rect.left); | ||||||
| 	point.y = (rect.bottom - rect.top) + (int)(fScale*dialog_shift); | 	point.y = (rect.bottom - rect.top) + (int)(fScale*dialog_shift); | ||||||
| 	SetWindowPos(hLog, 0, 0, 0, point.x, point.y, 0); | 	SetWindowPos(hLog, NULL, 0, 0, point.x, point.y, SWP_NOZORDER); | ||||||
| 	// Don't forget to scroll the edit to the bottom after resize
 | 	// Don't forget to scroll the edit to the bottom after resize
 | ||||||
| 	SendMessage(hLog, EM_LINESCROLL, 0, SendMessage(hLog, EM_GETLINECOUNT, 0, 0)); | 	SendMessage(hLog, EM_LINESCROLL, 0, SendMessage(hLog, EM_GETLINECOUNT, 0, 0)); | ||||||
| 
 | 
 | ||||||
|  | @ -1195,7 +1189,7 @@ static void ToggleToGo(void) | ||||||
| 
 | 
 | ||||||
| 	// Move the controls up or down
 | 	// Move the controls up or down
 | ||||||
| 	MoveCtrlY(hMainDialog, IDC_STATUS, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_STATUS, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_HASH, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_STATUS_TOOLBAR, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_START, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_START, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_INFO, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_INFO, dialog_shift); | ||||||
| 	MoveCtrlY(hMainDialog, IDC_PROGRESS, dialog_shift); | 	MoveCtrlY(hMainDialog, IDC_PROGRESS, dialog_shift); | ||||||
|  | @ -1226,7 +1220,7 @@ static void ToggleToGo(void) | ||||||
| 	GetWindowRect(hLog, &rect); | 	GetWindowRect(hLog, &rect); | ||||||
| 	point.x = (rect.right - rect.left); | 	point.x = (rect.right - rect.left); | ||||||
| 	point.y = (rect.bottom - rect.top) + (int)(fScale*dialog_shift); | 	point.y = (rect.bottom - rect.top) + (int)(fScale*dialog_shift); | ||||||
| 	SetWindowPos(hLog, 0, 0, 0, point.x, point.y, 0); | 	SetWindowPos(hLog, NULL, 0, 0, point.x, point.y, SWP_NOZORDER); | ||||||
| 	// Don't forget to scroll the edit to the bottom after resize
 | 	// Don't forget to scroll the edit to the bottom after resize
 | ||||||
| 	SendMessage(hLog, EM_LINESCROLL, 0, SendMessage(hLog, EM_GETLINECOUNT, 0, 0)); | 	SendMessage(hLog, EM_LINESCROLL, 0, SendMessage(hLog, EM_GETLINECOUNT, 0, 0)); | ||||||
| 
 | 
 | ||||||
|  | @ -1645,6 +1639,7 @@ void InitDialog(HWND hDlg) | ||||||
| 	hDC = GetDC(hDlg); | 	hDC = GetDC(hDlg); | ||||||
| 	fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f; | 	fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f; | ||||||
| 	lfHeight = -MulDiv(9, GetDeviceCaps(hDC, LOGPIXELSY), 72); | 	lfHeight = -MulDiv(9, GetDeviceCaps(hDC, LOGPIXELSY), 72); | ||||||
|  | 	if (hDC != NULL) | ||||||
| 		ReleaseDC(hDlg, hDC); | 		ReleaseDC(hDlg, hDC); | ||||||
| 	// Adjust icon size lookup
 | 	// Adjust icon size lookup
 | ||||||
| 	s16 = i16; | 	s16 = i16; | ||||||
|  | @ -1703,8 +1698,6 @@ void InitDialog(HWND hDlg) | ||||||
| 	selection_default = BT_FREEDOS; | 	selection_default = BT_FREEDOS; | ||||||
| 	// Create the status line and initialize the taskbar icon for progress overlay
 | 	// Create the status line and initialize the taskbar icon for progress overlay
 | ||||||
| 	CreateStatusBar(); | 	CreateStatusBar(); | ||||||
| 	// Create the hash sign on the status bar
 |  | ||||||
| 	EnableHash(FALSE); |  | ||||||
| 	CreateTaskbarList(); | 	CreateTaskbarList(); | ||||||
| 	SetTaskbarProgressState(TASKBAR_NORMAL); | 	SetTaskbarProgressState(TASKBAR_NORMAL); | ||||||
| 
 | 
 | ||||||
|  | @ -1780,7 +1773,7 @@ void InitDialog(HWND hDlg) | ||||||
| 	// Set the top margin to 4 DIPs and the right margin so that it's aligned with the Device List Combobox
 | 	// Set the top margin to 4 DIPs and the right margin so that it's aligned with the Device List Combobox
 | ||||||
| 	GetWindowRect(hDeviceList, &rcDeviceList); | 	GetWindowRect(hDeviceList, &rcDeviceList); | ||||||
| 	MapWindowPoints(NULL, hDlg, (POINT*)&rcDeviceList, 2); | 	MapWindowPoints(NULL, hDlg, (POINT*)&rcDeviceList, 2); | ||||||
| 	SetWindowPos(hLangToolbar, NULL, rcDeviceList.right - rcToolbarButton.right, | 	SetWindowPos(hLangToolbar, HWND_TOP, rcDeviceList.right - rcToolbarButton.right, | ||||||
| 		(int)(4.0f * fScale), rcToolbarButton.right, rcToolbarButton.bottom, 0); | 		(int)(4.0f * fScale), rcToolbarButton.right, rcToolbarButton.bottom, 0); | ||||||
| 	ShowWindow(hLangToolbar, SW_SHOWNORMAL); | 	ShowWindow(hLangToolbar, SW_SHOWNORMAL); | ||||||
| 
 | 
 | ||||||
|  | @ -1805,7 +1798,7 @@ void InitDialog(HWND hDlg) | ||||||
| 	GetWindowRect(hSelectISO, &rcSelectImage); | 	GetWindowRect(hSelectISO, &rcSelectImage); | ||||||
| 	MapWindowPoints(NULL, hDlg, (POINT*)&rcSelectImage, 2); | 	MapWindowPoints(NULL, hDlg, (POINT*)&rcSelectImage, 2); | ||||||
| 	SetWindowPos(hSelectISO, NULL, rcSelectImage.left, rcBootType.top - 1, | 	SetWindowPos(hSelectISO, NULL, rcSelectImage.left, rcBootType.top - 1, | ||||||
| 		rcSelectImage.right - rcSelectImage.left, rcBootType.bottom - rcBootType.top + 2, 0); | 		rcSelectImage.right - rcSelectImage.left, rcBootType.bottom - rcBootType.top + 2, SWP_NOZORDER); | ||||||
| 
 | 
 | ||||||
| 	// The things one needs to do to keep things looking good...
 | 	// The things one needs to do to keep things looking good...
 | ||||||
| 	if (nWindowsVersion == WINDOWS_7) { | 	if (nWindowsVersion == WINDOWS_7) { | ||||||
|  | @ -1855,7 +1848,7 @@ void InitDialog(HWND hDlg) | ||||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_ABOUT), lmprintf(MSG_172), -1); | 	CreateTooltip(GetDlgItem(hDlg, IDC_ABOUT), lmprintf(MSG_172), -1); | ||||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_WINDOWS_INSTALL), lmprintf(MSG_199), -1); | 	CreateTooltip(GetDlgItem(hDlg, IDC_WINDOWS_INSTALL), lmprintf(MSG_199), -1); | ||||||
| 	CreateTooltip(GetDlgItem(hDlg, IDC_WINDOWS_TO_GO), lmprintf(MSG_200), -1); | 	CreateTooltip(GetDlgItem(hDlg, IDC_WINDOWS_TO_GO), lmprintf(MSG_200), -1); | ||||||
| 	CreateTooltip(hHash, lmprintf(MSG_272), -1); | 	CreateTooltip(hStatusToolbar, lmprintf(MSG_272), -1); | ||||||
| 	CreateTooltip(hLangToolbar, lmprintf(MSG_273), -1); | 	CreateTooltip(hLangToolbar, lmprintf(MSG_273), -1); | ||||||
| 
 | 
 | ||||||
| 	// Set a label for the Advanced Mode and Select Image button for screen readers
 | 	// Set a label for the Advanced Mode and Select Image button for screen readers
 | ||||||
|  | @ -2080,10 +2073,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 				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_MIDDLE: |  | ||||||
| 				SetTextColor(pDI->hDC, ((image_path==NULL)||(!hash_enabled))?GetSysColor(COLOR_3DSHADOW):GetSysColor(COLOR_BTNTEXT)); |  | ||||||
| 				DrawTextExA(pDI->hDC, "#", -1, &pDI->rcItem, DT_CENTER, NULL); |  | ||||||
| 				return (INT_PTR)TRUE; |  | ||||||
| 			case SB_SECTION_RIGHT: | 			case SB_SECTION_RIGHT: | ||||||
| 				SetTextColor(pDI->hDC, GetSysColor(COLOR_3DSHADOW)); | 				SetTextColor(pDI->hDC, GetSysColor(COLOR_3DSHADOW)); | ||||||
| 				DrawTextExA(pDI->hDC, szTimer, -1, &pDI->rcItem, DT_LEFT, NULL); | 				DrawTextExA(pDI->hDC, szTimer, -1, &pDI->rcItem, DT_LEFT, NULL); | ||||||
|  | @ -2314,7 +2303,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 				iso_provided = FALSE;	// One off thing...
 | 				iso_provided = FALSE;	// One off thing...
 | ||||||
| 			} else { | 			} else { | ||||||
| 				safe_free(image_path); | 				safe_free(image_path); | ||||||
| 				EnableHash(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); | ||||||
|  | @ -2421,7 +2410,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | ||||||
| 				format_op_in_progress = FALSE; | 				format_op_in_progress = FALSE; | ||||||
| 			break; | 			break; | ||||||
| 		case IDC_HASH: | 		case IDC_HASH: | ||||||
| 			if ((format_thid == NULL) && (image_path != NULL) && (hash_enabled)) { | 			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; | ||||||
|  |  | ||||||
|  | @ -155,10 +155,7 @@ typedef struct { | ||||||
| #define SB_SECTION_LEFT         0 | #define SB_SECTION_LEFT         0 | ||||||
| #define SB_SECTION_MIDDLE       1 | #define SB_SECTION_MIDDLE       1 | ||||||
| #define SB_SECTION_RIGHT        2 | #define SB_SECTION_RIGHT        2 | ||||||
| 
 | #define SB_TIMER_SECTION_SIZE   58.0f | ||||||
| /* Distance, from the right border, of the Status Bar separators */ |  | ||||||
| #define SB_EDGE_1           77.0f |  | ||||||
| #define SB_EDGE_2           58.0f |  | ||||||
| 
 | 
 | ||||||
| /* Timers used throughout the program */ | /* Timers used throughout the program */ | ||||||
| enum timer_type { | enum timer_type { | ||||||
|  | @ -356,7 +353,7 @@ enum WindowsVersion { | ||||||
| extern HINSTANCE hMainInstance; | extern HINSTANCE hMainInstance; | ||||||
| extern HWND hMainDialog, hLogDlg, hStatus, hDeviceList, hCapacity; | extern HWND hMainDialog, hLogDlg, hStatus, hDeviceList, hCapacity; | ||||||
| extern HWND hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog; | extern HWND hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog; | ||||||
| extern HWND hInfo, hProgress, hDiskID, hHash; | extern HWND hInfo, hProgress, hDiskID, hStatusToolbar; | ||||||
| extern float fScale; | extern float fScale; | ||||||
| extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH], system_dir[MAX_PATH]; | extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH], system_dir[MAX_PATH]; | ||||||
| extern char* image_path; | extern char* image_path; | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -32,7 +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 | ||||||
| CAPTION "Rufus 2.3.691" | CAPTION "Rufus 2.3.692" | ||||||
| FONT 8, "Segoe UI Symbol", 400, 0, 0x0 | FONT 8, "Segoe UI Symbol", 400, 0, 0x0 | ||||||
| BEGIN | BEGIN | ||||||
|     LTEXT           "Device",IDS_DEVICE_TXT,9,6,200,8 |     LTEXT           "Device",IDS_DEVICE_TXT,9,6,200,8 | ||||||
|  | @ -86,16 +86,16 @@ BEGIN | ||||||
|     DEFPUSHBUTTON   "OK",IDOK,251,215,50,14,WS_GROUP |     DEFPUSHBUTTON   "OK",IDOK,251,215,50,14,WS_GROUP | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| IDD_CHECKSUM DIALOGEX 0, 0, 301, 69 | IDD_CHECKSUM DIALOGEX 0, 0, 301, 63 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| CAPTION "Checksums" | CAPTION "Checksums" | ||||||
| FONT 8, "Segoe UI Symbol", 400, 0, 0x0 | FONT 8, "Segoe UI Symbol", 400, 0, 0x0 | ||||||
| BEGIN | BEGIN | ||||||
|     DEFPUSHBUTTON   "OK",IDOK,244,49,50,14,WS_GROUP |     LTEXT           "MD5:",IDC_STATIC,11,10,18,8 | ||||||
|     EDITTEXT        IDC_SHA1,40,31,197,12,ES_LOWERCASE | ES_AUTOHSCROLL | ES_READONLY |     EDITTEXT        IDC_MD5,38,9,197,12,ES_LOWERCASE | ES_AUTOHSCROLL | ES_READONLY | ||||||
|     EDITTEXT        IDC_MD5,40,15,197,12,ES_LOWERCASE | ES_AUTOHSCROLL | ES_READONLY |     LTEXT           "SHA1:",IDC_STATIC,11,26,20,8 | ||||||
|     LTEXT           "MD5:",IDC_STATIC,13,16,18,8 |     EDITTEXT        IDC_SHA1,38,25,197,12,ES_LOWERCASE | ES_AUTOHSCROLL | ES_READONLY | ||||||
|     LTEXT           "SHA-1:",IDC_STATIC,13,32,22,8 |     DEFPUSHBUTTON   "OK",IDOK,243,43,50,14,WS_GROUP | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
| IDD_LICENSE DIALOGEX 0, 0, 335, 205 | IDD_LICENSE DIALOGEX 0, 0, 335, 205 | ||||||
|  | @ -298,8 +298,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 2,3,691,0 |  FILEVERSION 2,3,692,0 | ||||||
|  PRODUCTVERSION 2,3,691,0 |  PRODUCTVERSION 2,3,692,0 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -316,13 +316,13 @@ BEGIN | ||||||
|         BEGIN |         BEGIN | ||||||
|             VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" |             VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" | ||||||
|             VALUE "FileDescription", "Rufus" |             VALUE "FileDescription", "Rufus" | ||||||
|             VALUE "FileVersion", "2.3.691" |             VALUE "FileVersion", "2.3.692" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)" | ||||||
|             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" |             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" | ||||||
|             VALUE "OriginalFilename", "rufus.exe" |             VALUE "OriginalFilename", "rufus.exe" | ||||||
|             VALUE "ProductName", "Rufus" |             VALUE "ProductName", "Rufus" | ||||||
|             VALUE "ProductVersion", "2.3.691" |             VALUE "ProductVersion", "2.3.692" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
							
								
								
									
										94
									
								
								src/stdlg.c
									
										
									
									
									
								
							
							
						
						
									
										94
									
								
								src/stdlg.c
									
										
									
									
									
								
							|  | @ -56,7 +56,7 @@ static char* szMessageText = NULL; | ||||||
| static char* szMessageTitle = NULL; | static char* szMessageTitle = NULL; | ||||||
| static HWND hBrowseEdit; | static HWND hBrowseEdit; | ||||||
| extern HWND hUpdatesDlg; | extern HWND hUpdatesDlg; | ||||||
| static WNDPROC pOrgBrowseWndproc, pOrgHashWdnProc; | static WNDPROC pOrgBrowseWndproc; | ||||||
| static const SETTEXTEX friggin_microsoft_unicode_amateurs = {ST_DEFAULT, CP_UTF8}; | static const SETTEXTEX friggin_microsoft_unicode_amateurs = {ST_DEFAULT, CP_UTF8}; | ||||||
| static BOOL notification_is_question; | static BOOL notification_is_question; | ||||||
| static const notification_info* notification_more_info; | static const notification_info* notification_more_info; | ||||||
|  | @ -395,28 +395,19 @@ fallback: | ||||||
| 	return filepath; | 	return filepath; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Subclass the Hash button, so that it will be active but not display in the UI
 |  | ||||||
| static INT_PTR CALLBACK HashCallback(HWND hCtrl, UINT message, WPARAM wParam, LPARAM lParam) |  | ||||||
| { |  | ||||||
| 	PAINTSTRUCT ps; |  | ||||||
| 	if (message == WM_PAINT) { |  | ||||||
| 		// Even though we really don't want to paint anything, we *MUST* call Begin/EndPaint
 |  | ||||||
| 		BeginPaint(hCtrl , &ps); |  | ||||||
| 		EndPaint(hCtrl, &ps); |  | ||||||
| 		return TRUE; |  | ||||||
| 	} |  | ||||||
| 	return CallWindowProc(pOrgHashWdnProc, hCtrl, message, wParam, lParam); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /*
 | /*
 | ||||||
|  * Create the application status bar |  * Create the application status bar | ||||||
|  */ |  */ | ||||||
| void CreateStatusBar(void) | void CreateStatusBar(void) | ||||||
| { | { | ||||||
|  | 	SIZE sz = {0, 0}; | ||||||
| 	RECT rect; | 	RECT rect; | ||||||
| 	LONG height; | 	LONG x, y, width, height; | ||||||
| 	int edge[3]; | 	int edge[3]; | ||||||
|  | 	TBBUTTON tbbStatusToolbarButtons[1]; | ||||||
|  | 	TBBUTTONINFO tbi; | ||||||
| 	HFONT hFont; | 	HFONT hFont; | ||||||
|  | 	HDC hDC; | ||||||
| 
 | 
 | ||||||
| 	// Create the status bar (WS_CLIPSIBLINGS since we have an overlapping button)
 | 	// Create the status bar (WS_CLIPSIBLINGS since we have an overlapping button)
 | ||||||
| 	hStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | SBARS_TOOLTIPS | WS_CLIPSIBLINGS, | 	hStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | SBARS_TOOLTIPS | WS_CLIPSIBLINGS, | ||||||
|  | @ -427,10 +418,22 @@ void CreateStatusBar(void) | ||||||
| 	GetClientRect(hStatus, &rect); | 	GetClientRect(hStatus, &rect); | ||||||
| 	height = rect.bottom; | 	height = rect.bottom; | ||||||
| 
 | 
 | ||||||
|  | 	// Set the font we'll use to display the '#' sign in the toolbar button
 | ||||||
|  | 	hFont = CreateFontA(-MulDiv(10, GetDeviceCaps(GetDC(hMainDialog), LOGPIXELSY), 72), | ||||||
|  | 		0, 0, 0, FW_MEDIUM, FALSE, FALSE, FALSE, DEFAULT_CHARSET, | ||||||
|  | 		0, 0, PROOF_QUALITY, 0, (nWindowsVersion >= WINDOWS_VISTA)?"Segoe UI":"Arial Unicode MS"); | ||||||
|  | 
 | ||||||
|  | 	// Find the width of our hash sign
 | ||||||
|  | 	hDC = GetDC(hMainDialog); | ||||||
|  | 	SelectObject(hDC, hFont); | ||||||
|  | 	GetTextExtentPoint32W(hDC, L"#", 1, &sz); | ||||||
|  | 	if (hDC != NULL) | ||||||
|  | 		ReleaseDC(hMainDialog, hDC); | ||||||
|  | 
 | ||||||
| 	// Create 3 status areas
 | 	// Create 3 status areas
 | ||||||
| 	GetClientRect(hMainDialog, &rect); | 	GetClientRect(hMainDialog, &rect); | ||||||
| 	edge[0] = rect.right - (int)(SB_EDGE_1 * fScale); | 	edge[1] = rect.right - (int)(SB_TIMER_SECTION_SIZE * fScale); | ||||||
| 	edge[1] = rect.right - (int)(SB_EDGE_2 * fScale); | 	edge[0] = edge[1] - (8 + sz.cx + 8 + 1); // There's 8 absolute pixels on right and left of the text
 | ||||||
| 	edge[2] = rect.right; | 	edge[2] = rect.right; | ||||||
| 	SendMessage(hStatus, SB_SETPARTS, (WPARAM)ARRAYSIZE(edge), (LPARAM)&edge); | 	SendMessage(hStatus, SB_SETPARTS, (WPARAM)ARRAYSIZE(edge), (LPARAM)&edge); | ||||||
| 
 | 
 | ||||||
|  | @ -441,22 +444,51 @@ void CreateStatusBar(void) | ||||||
| 	// This is supposed to create a toolips for a statusbar section (when SBARS_TOOLTIPS is in use)... but doesn't :(
 | 	// This is supposed to create a toolips for a statusbar section (when SBARS_TOOLTIPS is in use)... but doesn't :(
 | ||||||
| 	//	SendMessageLU(hStatus, SB_SETTIPTEXT, (WPARAM)2, (LPARAM)"HELLO");
 | 	//	SendMessageLU(hStatus, SB_SETTIPTEXT, (WPARAM)2, (LPARAM)"HELLO");
 | ||||||
| 
 | 
 | ||||||
| 	// Manually create the Hash button on the status bar
 | 	// Compute the dimensions for the hash button
 | ||||||
| 	hHash = CreateWindowEx(WS_EX_TRANSPARENT, WC_BUTTON, TEXT("#"), WS_CHILD | WS_VISIBLE | WS_TABSTOP, | 	x = edge[0]; | ||||||
| 		edge[0], rect.bottom - height +1, edge[1] - edge[0] - 1, height - 1, hMainDialog, | 	y = rect.bottom - height + 1; | ||||||
| 		(HMENU)IDC_HASH, hMainInstance, NULL); | 	width = edge[1] - edge[0] - 1; | ||||||
|  | 	// How I wish there was a way to figure out how to make Windows controls look good
 | ||||||
|  | 	// at all scales, without adding all these crappy empirical adjustments...
 | ||||||
|  | 	if ((fScale > 1.20f) && (fScale <2.40f)) | ||||||
|  | 		height -= 1; | ||||||
|  | 	if (nWindowsVersion <= WINDOWS_7) | ||||||
|  | 		height += 1; | ||||||
| 
 | 
 | ||||||
| 	// Subclass our button so that we can hide it from the UI
 | 	// Create the status toolbar
 | ||||||
| 	pOrgHashWdnProc = (WNDPROC)SetWindowLongPtr(hHash, GWLP_WNDPROC, (LONG_PTR)HashCallback); | 	hStatusToolbar = CreateWindowEx(WS_EX_TRANSPARENT, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_TABSTOP | WS_DISABLED | | ||||||
|  | 		TBSTYLE_LIST | CCS_NOPARENTALIGN | CCS_NODIVIDER | CCS_NORESIZE, | ||||||
|  | 		x, y, width, height, hMainDialog, (HMENU)IDC_STATUS_TOOLBAR, hMainInstance, NULL); | ||||||
| 
 | 
 | ||||||
| 	// Set the font we'll use to display the '#' sign
 | 	// Set the button properties
 | ||||||
| 	hFont = CreateFontA(-MulDiv(10, GetDeviceCaps(GetDC(hMainDialog), LOGPIXELSY), 72), | 	SendMessage(hStatusToolbar, WM_SETFONT, (WPARAM)hFont, TRUE); | ||||||
| 		0, 0, 0, FW_MEDIUM, FALSE, FALSE, FALSE, DEFAULT_CHARSET, | 	SendMessage(hStatusToolbar, TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_MIXEDBUTTONS); | ||||||
| 		0, 0, PROOF_QUALITY, 0, (nWindowsVersion >= WINDOWS_VISTA)?"Segoe UI":"Arial Unicode MS"); | 	SendMessage(hStatusToolbar, TB_SETIMAGELIST, 0, (LPARAM)NULL); | ||||||
| 	SendDlgItemMessageA(hMainDialog, IDC_HASH, WM_SETFONT, (WPARAM)hFont, TRUE); | 	SendMessage(hStatusToolbar, TB_SETDISABLEDIMAGELIST, 0, (LPARAM)NULL);	 | ||||||
|  | 	SendMessage(hStatusToolbar, TB_SETBITMAPSIZE, 0, MAKELONG(0,0));	 | ||||||
| 
 | 
 | ||||||
| 	// Update our Z-order, just to be on the safe side
 | 	// Set our text
 | ||||||
| 	SetWindowPos(hStatus, hHash, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); | 	memset(tbbStatusToolbarButtons, 0, sizeof(TBBUTTON)); | ||||||
|  | 	tbbStatusToolbarButtons[0].idCommand = IDC_HASH; | ||||||
|  | 	tbbStatusToolbarButtons[0].fsStyle = BTNS_SHOWTEXT; | ||||||
|  | 	tbbStatusToolbarButtons[0].fsState = TBSTATE_ENABLED; | ||||||
|  | 	tbbStatusToolbarButtons[0].iString = (INT_PTR)L"#"; | ||||||
|  | 	SendMessage(hStatusToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); | ||||||
|  | 	SendMessage(hStatusToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&tbbStatusToolbarButtons); | ||||||
|  | 
 | ||||||
|  | 	SendMessage(hStatusToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(width, height - 1)); | ||||||
|  | 	// Yeah, you'd think that TB_SETBUTTONSIZE would work for the width... but you'd be wrong.
 | ||||||
|  | 	// The only working method that actually enforces the requested width is TB_SETBUTTONINFO
 | ||||||
|  | 	tbi.cbSize = sizeof(tbi); | ||||||
|  | 	tbi.dwMask = TBIF_SIZE | TBIF_COMMAND; | ||||||
|  | 	tbi.cx = (WORD)width; | ||||||
|  | 	tbi.idCommand = IDC_HASH; | ||||||
|  | 	SendMessage(hStatusToolbar, TB_SETBUTTONINFO, (WPARAM)IDC_HASH, (LPARAM)&tbi); | ||||||
|  | 
 | ||||||
|  | 	// Need to resend the positioning for the toolbar to become active... One of Windows' mysteries
 | ||||||
|  | 	// Also use this opportunity to set our Z-order for tab stop
 | ||||||
|  | 	SetWindowPos(hStatusToolbar, GetDlgItem(hMainDialog, IDCANCEL), x, y, width, height, 0); | ||||||
|  | 	ShowWindow(hStatusToolbar, SW_SHOWNORMAL); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  | @ -931,6 +963,7 @@ LONG GetEntryWidth(HWND hDropDown, const char *entry) | ||||||
| 	if (hFont != NULL) | 	if (hFont != NULL) | ||||||
| 		SelectObject(hDC, hDefFont); | 		SelectObject(hDC, hDefFont); | ||||||
| 
 | 
 | ||||||
|  | 	if (hDC != NULL) | ||||||
| 		ReleaseDC(hDropDown, hDC); | 		ReleaseDC(hDropDown, hDC); | ||||||
| 	return size.cx; | 	return size.cx; | ||||||
| } | } | ||||||
|  | @ -1362,6 +1395,7 @@ void SetTitleBarIcon(HWND hDlg) | ||||||
| 	i16 = GetSystemMetrics(SM_CXSMICON); | 	i16 = GetSystemMetrics(SM_CXSMICON); | ||||||
| 	hDC = GetDC(hDlg); | 	hDC = GetDC(hDlg); | ||||||
| 	fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f; | 	fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f; | ||||||
|  | 	if (hDC != NULL) | ||||||
| 		ReleaseDC(hDlg, hDC); | 		ReleaseDC(hDlg, hDC); | ||||||
| 	// Adjust icon size lookup
 | 	// Adjust icon size lookup
 | ||||||
| 	s16 = i16; | 	s16 = i16; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue