mirror of
https://github.com/pbatard/rufus.git
synced 2025-05-19 01:15:12 -04:00
[ui] adjust for high DPI
* also remove TaskbarList message on Vista and earlier
This commit is contained in:
parent
5e448f9523
commit
f77803cc78
4 changed files with 45 additions and 19 deletions
|
@ -1,5 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
|
||||||
|
<asmv3:application>
|
||||||
|
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||||
|
<dpiAware>true</dpiAware>
|
||||||
|
</asmv3:windowsSettings>
|
||||||
|
</asmv3:application>
|
||||||
<dependency>
|
<dependency>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity
|
<assemblyIdentity
|
||||||
|
|
34
src/rufus.c
34
src/rufus.c
|
@ -1352,7 +1352,7 @@ void InitDialog(HWND hDlg)
|
||||||
{
|
{
|
||||||
HINSTANCE hDllInst;
|
HINSTANCE hDllInst;
|
||||||
HDC hDC;
|
HDC hDC;
|
||||||
int i, i16;
|
int i, i16, s16, s32;
|
||||||
HICON hSmallIcon, hBigIcon;
|
HICON hSmallIcon, hBigIcon;
|
||||||
char tmp[128], *token;
|
char tmp[128], *token;
|
||||||
|
|
||||||
|
@ -1379,11 +1379,30 @@ void InitDialog(HWND hDlg)
|
||||||
hDC = GetDC(hDlg);
|
hDC = GetDC(hDlg);
|
||||||
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
|
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
|
||||||
ReleaseDC(hDlg, hDC);
|
ReleaseDC(hDlg, hDC);
|
||||||
|
// Adjust icon size lookup
|
||||||
|
s16 = i16;
|
||||||
|
s32 = (int)(32.0f*fScale);
|
||||||
|
if (s16 >= 54)
|
||||||
|
s16 = 64;
|
||||||
|
else if (s16 >= 40)
|
||||||
|
s16 = 48;
|
||||||
|
else if (s16 >= 28)
|
||||||
|
s16 = 32;
|
||||||
|
else if (s16 >= 20)
|
||||||
|
s16 = 24;
|
||||||
|
if (s32 >= 54)
|
||||||
|
s32 = 64;
|
||||||
|
else if (s32 >= 40)
|
||||||
|
s32 = 48;
|
||||||
|
else if (s32 >= 28)
|
||||||
|
s32 = 32;
|
||||||
|
else if (s32 >= 20)
|
||||||
|
s32 = 24;
|
||||||
|
|
||||||
// Create the title bar icon
|
// Create the title bar icon
|
||||||
hSmallIcon = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 16, 16, 0);
|
hSmallIcon = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, s16, s16, 0);
|
||||||
SendMessage (hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hSmallIcon);
|
SendMessage (hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hSmallIcon);
|
||||||
hBigIcon = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, 32, 32, 0);
|
hBigIcon = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_ICON), IMAGE_ICON, s32, s32, 0);
|
||||||
SendMessage (hDlg, WM_SETICON, ICON_BIG, (LPARAM)hBigIcon);
|
SendMessage (hDlg, WM_SETICON, ICON_BIG, (LPARAM)hBigIcon);
|
||||||
GetWindowTextA(hDlg, tmp, sizeof(tmp));
|
GetWindowTextA(hDlg, tmp, sizeof(tmp));
|
||||||
// Count of Microsoft for making it more attractive to read a
|
// Count of Microsoft for making it more attractive to read a
|
||||||
|
@ -1430,10 +1449,10 @@ void InitDialog(HWND hDlg)
|
||||||
|
|
||||||
// Load system icons (NB: Use the excellent http://www.nirsoft.net/utils/iconsext.html to find icon IDs)
|
// Load system icons (NB: Use the excellent http://www.nirsoft.net/utils/iconsext.html to find icon IDs)
|
||||||
hDllInst = LoadLibraryA("shell32.dll");
|
hDllInst = LoadLibraryA("shell32.dll");
|
||||||
hIconDisc = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(12), IMAGE_ICON, i16, i16, LR_DEFAULTCOLOR|LR_SHARED);
|
hIconDisc = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(12), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR|LR_SHARED);
|
||||||
if (nWindowsVersion >= WINDOWS_VISTA) {
|
if (nWindowsVersion >= WINDOWS_VISTA) {
|
||||||
hIconDown = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(16750), IMAGE_ICON, i16, i16, LR_DEFAULTCOLOR|LR_SHARED);
|
hIconDown = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(16750), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR|LR_SHARED);
|
||||||
hIconUp = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(16749), IMAGE_ICON, i16, i16, LR_DEFAULTCOLOR|LR_SHARED);
|
hIconUp = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(16749), IMAGE_ICON, s16, s16, LR_DEFAULTCOLOR|LR_SHARED);
|
||||||
} else {
|
} else {
|
||||||
hIconDown = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_DOWN), IMAGE_ICON, 16, 16, 0);
|
hIconDown = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_DOWN), IMAGE_ICON, 16, 16, 0);
|
||||||
hIconUp = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_UP), IMAGE_ICON, 16, 16, 0);
|
hIconUp = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_UP), IMAGE_ICON, 16, 16, 0);
|
||||||
|
@ -1577,8 +1596,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
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);
|
||||||
// TODO: adjust for high DPI
|
Point.x = min(DialogRect.right + GetSystemMetrics(SM_CXSIZEFRAME)+(int)(2.0f * fScale), DesktopRect.right - nWidth);
|
||||||
Point.x = min(DialogRect.right + 10, DesktopRect.right - nWidth);
|
|
||||||
Point.y = max(DialogRect.top, DesktopRect.top - nHeight);
|
Point.y = max(DialogRect.top, DesktopRect.top - nHeight);
|
||||||
MoveWindow(hLogDlg, Point.x, Point.y, nWidth, nHeight, FALSE);
|
MoveWindow(hLogDlg, Point.x, Point.y, nWidth, nHeight, FALSE);
|
||||||
first_log_display = FALSE;
|
first_log_display = FALSE;
|
||||||
|
|
18
src/rufus.rc
18
src/rufus.rc
|
@ -30,7 +30,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 206, 316
|
IDD_DIALOG DIALOGEX 12, 12, 206, 316
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_APPWINDOW
|
EXSTYLE WS_EX_APPWINDOW
|
||||||
CAPTION "Rufus v1.2.0.181"
|
CAPTION "Rufus v1.2.0.182"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,94,278,50,14
|
DEFPUSHBUTTON "Start",IDC_START,94,278,50,14
|
||||||
|
@ -77,7 +77,7 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK",IDOK,231,175,50,14,WS_GROUP
|
DEFPUSHBUTTON "OK",IDOK,231,175,50,14,WS_GROUP
|
||||||
CONTROL "<a href=""http://rufus.akeo.ie"">http://rufus.akeo.ie</a>",IDC_ABOUT_RUFUS_URL,
|
CONTROL "<a href=""http://rufus.akeo.ie"">http://rufus.akeo.ie</a>",IDC_ABOUT_RUFUS_URL,
|
||||||
"SysLink",WS_TABSTOP,46,47,114,9
|
"SysLink",WS_TABSTOP,46,47,114,9
|
||||||
LTEXT "Version 1.2.0 (Build 181)",IDC_STATIC,46,19,78,8
|
LTEXT "Version 1.2.0 (Build 182)",IDC_STATIC,46,19,78,8
|
||||||
PUSHBUTTON "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP
|
PUSHBUTTON "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP
|
||||||
EDITTEXT IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
EDITTEXT IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
||||||
LTEXT "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8
|
LTEXT "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8
|
||||||
|
@ -123,9 +123,9 @@ CAPTION "Log"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_LOG_EDIT,0,0,366,252,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
EDITTEXT IDC_LOG_EDIT,0,0,366,252,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,204,259,50,14
|
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,259,50,14
|
||||||
PUSHBUTTON "Save Log",IDC_LOG_SAVE,259,259,50,14
|
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,259,50,14
|
||||||
PUSHBUTTON "Close",IDCANCEL,314,259,50,14
|
PUSHBUTTON "Close Log",IDCANCEL,308,259,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
@ -237,8 +237,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,2,0,181
|
FILEVERSION 1,2,0,182
|
||||||
PRODUCTVERSION 1,2,0,181
|
PRODUCTVERSION 1,2,0,182
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -255,13 +255,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "akeo.ie"
|
VALUE "CompanyName", "akeo.ie"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "1.2.0.181"
|
VALUE "FileVersion", "1.2.0.182"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011 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", "1.2.0.181"
|
VALUE "ProductVersion", "1.2.0.182"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -1051,10 +1051,13 @@ const IID my_CLSID_TaskbarList =
|
||||||
|
|
||||||
static my_ITaskbarList3* ptbl = NULL;
|
static my_ITaskbarList3* ptbl = NULL;
|
||||||
|
|
||||||
|
// Create a taskbar icon progressbar
|
||||||
BOOL CreateTaskbarList(void)
|
BOOL CreateTaskbarList(void)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
// Create the taskbar icon progressbar
|
if (nWindowsVersion < WINDOWS_7)
|
||||||
|
// Only valid for Windows 7 or later
|
||||||
|
return FALSE;
|
||||||
hr = CoCreateInstance(&my_CLSID_TaskbarList, NULL, CLSCTX_ALL, &my_IID_ITaskbarList3, (LPVOID)&ptbl);
|
hr = CoCreateInstance(&my_CLSID_TaskbarList, NULL, CLSCTX_ALL, &my_IID_ITaskbarList3, (LPVOID)&ptbl);
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
uprintf("CoCreateInstance for TaskbarList failed: error %X\n", hr);
|
uprintf("CoCreateInstance for TaskbarList failed: error %X\n", hr);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue