void QueryDisplayDPI();\r
int CalcPixelX(int x);\r
int CalcPixelY(int y);\r
-HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY);\r
+HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY, int ScaleNumerator, int ScaleDenominator);\r
\r
/*===== dlgsize.c =====*/\r
\r
return (y * DisplayDPIY + 96 / 2) / 96;\r
}\r
\r
-HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY)\r
+HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY, int ScaleNumerator, int ScaleDenominator)\r
{\r
HBITMAP hDstBitmap;\r
HDC hDC;\r
BITMAP Bitmap;\r
HGDIOBJ hSrcOld;\r
HGDIOBJ hDstOld;\r
+ int Width;\r
+ int Height;\r
hDstBitmap = NULL;\r
if(hDC = GetDC(NULL))\r
{\r
{\r
if(GetObject(hBitmap, sizeof(BITMAP), &Bitmap) > 0)\r
{\r
- if(hDstBitmap = CreateCompatibleBitmap(hDC, CalcPixelX((Bitmap.bmWidth / UnitSizeX) * UnitSizeX), CalcPixelY((Bitmap.bmHeight / UnitSizeY) * UnitSizeY)))\r
+ if(UnitSizeX == 0)\r
+ UnitSizeX = Bitmap.bmWidth;\r
+ if(UnitSizeY == 0)\r
+ UnitSizeY = Bitmap.bmHeight;\r
+ Width = (Bitmap.bmWidth / UnitSizeX) * ((CalcPixelX(UnitSizeX) * ScaleNumerator) / ScaleDenominator);\r
+ Height = (Bitmap.bmHeight / UnitSizeY) * ((CalcPixelY(UnitSizeY) * ScaleNumerator) / ScaleDenominator);\r
+ if(hDstBitmap = CreateCompatibleBitmap(hDC, Width, Height))\r
{\r
hSrcOld = SelectObject(hSrcDC, hBitmap);\r
hDstOld = SelectObject(hDstDC, hDstBitmap);\r
SetStretchBltMode(hDstDC, HALFTONE);\r
- StretchBlt(hDstDC, 0, 0, CalcPixelX((Bitmap.bmWidth / UnitSizeX) * UnitSizeX), CalcPixelY((Bitmap.bmHeight / UnitSizeY) * UnitSizeY), hSrcDC, 0, 0, Bitmap.bmWidth, Bitmap.bmHeight, SRCCOPY);\r
+ StretchBlt(hDstDC, 0, 0, Width, Height, hSrcDC, 0, 0, Bitmap.bmWidth, Bitmap.bmHeight, SRCCOPY);\r
SelectObject(hSrcDC, hSrcOld);\r
SelectObject(hDstDC, hDstOld);\r
}\r
int MakeStatusBarWindow(HWND hWnd, HINSTANCE hInst)\r
{\r
int Sts;\r
+ // 高DPI対応\r
+ int i;\r
\r
Sts = FFFTP_FAIL;\r
hWndSbar = CreateWindowEx(0,\r
\r
if(hWndSbar != NULL)\r
{\r
+ // 高DPI対応\r
+ for(i = 0; i < sizeof(SbarColWidth) / sizeof(int); i++)\r
+ SbarColWidth[i] = CalcPixelX(SbarColWidth[i]);\r
SendMessage(hWndSbar, SB_SETPARTS, sizeof(SbarColWidth)/sizeof(int), (LPARAM)SbarColWidth);\r
ShowWindow(hWndSbar, SW_SHOW);\r
Sts = FFFTP_SUCCESS;\r
hOriginal = LoadImage(hInst, MAKEINTRESOURCE(main_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);\r
if(hOriginal != NULL)\r
{\r
- hResized = ResizeBitmap(hOriginal, 16, 16);\r
+ hResized = ResizeBitmap(hOriginal, 16, 16, 1, 1);\r
DeleteObject(hOriginal);\r
}\r
hWndTbarMain = CreateToolbarEx(\r
hOriginal = LoadImage(hInst, MAKEINTRESOURCE(remote_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);\r
if(hOriginal != NULL)\r
{\r
- hResized = ResizeBitmap(hOriginal, 16, 16);\r
+ hResized = ResizeBitmap(hOriginal, 16, 16, 1, 1);\r
DeleteObject(hOriginal);\r
}\r
hWndTbarLocal = CreateToolbarEx(\r
hOriginal = LoadImage(hInst, MAKEINTRESOURCE(remote_toolbar_bmp), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS);\r
if(hOriginal != NULL)\r
{\r
- hResized = ResizeBitmap(hOriginal, 16, 16);\r
+ hResized = ResizeBitmap(hOriginal, 16, 16, 1, 1);\r
DeleteObject(hOriginal);\r
}\r
hWndTbarRemote = CreateToolbarEx(\r