mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00: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"?>
|
||||
<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>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
|
|
34
src/rufus.c
34
src/rufus.c
|
@ -1352,7 +1352,7 @@ void InitDialog(HWND hDlg)
|
|||
{
|
||||
HINSTANCE hDllInst;
|
||||
HDC hDC;
|
||||
int i, i16;
|
||||
int i, i16, s16, s32;
|
||||
HICON hSmallIcon, hBigIcon;
|
||||
char tmp[128], *token;
|
||||
|
||||
|
@ -1379,11 +1379,30 @@ void InitDialog(HWND hDlg)
|
|||
hDC = GetDC(hDlg);
|
||||
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
|
||||
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
|
||||
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);
|
||||
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);
|
||||
GetWindowTextA(hDlg, tmp, sizeof(tmp));
|
||||
// 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)
|
||||
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) {
|
||||
hIconDown = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(16750), IMAGE_ICON, i16, i16, LR_DEFAULTCOLOR|LR_SHARED);
|
||||
hIconUp = (HICON)LoadImage(hDllInst, MAKEINTRESOURCE(16749), 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, s16, s16, LR_DEFAULTCOLOR|LR_SHARED);
|
||||
} else {
|
||||
hIconDown = (HICON)LoadImage(hMainInstance, MAKEINTRESOURCE(IDI_DOWN), 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;
|
||||
nHeight = DialogRect.bottom - DialogRect.top;
|
||||
GetWindowRect(hDlg, &DialogRect);
|
||||
// TODO: adjust for high DPI
|
||||
Point.x = min(DialogRect.right + 10, DesktopRect.right - nWidth);
|
||||
Point.x = min(DialogRect.right + GetSystemMetrics(SM_CXSIZEFRAME)+(int)(2.0f * fScale), DesktopRect.right - nWidth);
|
||||
Point.y = max(DialogRect.top, DesktopRect.top - nHeight);
|
||||
MoveWindow(hLogDlg, Point.x, Point.y, nWidth, nHeight, 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
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "Rufus v1.2.0.181"
|
||||
CAPTION "Rufus v1.2.0.182"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Start",IDC_START,94,278,50,14
|
||||
|
@ -77,7 +77,7 @@ BEGIN
|
|||
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,
|
||||
"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
|
||||
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
|
||||
|
@ -123,9 +123,9 @@ CAPTION "Log"
|
|||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
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 "Save Log",IDC_LOG_SAVE,259,259,50,14
|
||||
PUSHBUTTON "Close",IDCANCEL,314,259,50,14
|
||||
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,259,50,14
|
||||
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,259,50,14
|
||||
PUSHBUTTON "Close Log",IDCANCEL,308,259,50,14
|
||||
END
|
||||
|
||||
|
||||
|
@ -237,8 +237,8 @@ END
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,2,0,181
|
||||
PRODUCTVERSION 1,2,0,181
|
||||
FILEVERSION 1,2,0,182
|
||||
PRODUCTVERSION 1,2,0,182
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -255,13 +255,13 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "akeo.ie"
|
||||
VALUE "FileDescription", "Rufus"
|
||||
VALUE "FileVersion", "1.2.0.181"
|
||||
VALUE "FileVersion", "1.2.0.182"
|
||||
VALUE "InternalName", "Rufus"
|
||||
VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)"
|
||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||
VALUE "OriginalFilename", "rufus.exe"
|
||||
VALUE "ProductName", "Rufus"
|
||||
VALUE "ProductVersion", "1.2.0.181"
|
||||
VALUE "ProductVersion", "1.2.0.182"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
|
@ -1051,10 +1051,13 @@ const IID my_CLSID_TaskbarList =
|
|||
|
||||
static my_ITaskbarList3* ptbl = NULL;
|
||||
|
||||
// Create a taskbar icon progressbar
|
||||
BOOL CreateTaskbarList(void)
|
||||
{
|
||||
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);
|
||||
if (FAILED(hr)) {
|
||||
uprintf("CoCreateInstance for TaskbarList failed: error %X\n", hr);
|
||||
|
|
Loading…
Reference in a new issue