OSDN Git Service

Rebuild OpenSSL with backward compatibility options.
[ffftp/ffftp.git] / misc.c
diff --git a/misc.c b/misc.c
index 4b05cf1..606b556 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -76,6 +76,9 @@ extern HWND hHelpWin;
 \r
 static DIALOGDATA *DialogData;         /* 入力ダイアログデータ */\r
 static int HelpPage;\r
+// 高DPI対応\r
+static int DisplayDPIX;\r
+static int DisplayDPIY;\r
 \r
 \r
 \r
@@ -259,6 +262,27 @@ INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LP
 }\r
 \r
 \r
+// 全設定暗号化対応\r
+// 何らかのボタンが押されたときに終了\r
+INT_PTR CALLBACK AnyButtonDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+{\r
+       switch (message)\r
+       {\r
+               case WM_INITDIALOG :\r
+                       return(TRUE);\r
+\r
+               case WM_COMMAND :\r
+                       switch(GET_WM_COMMAND_CMD(wParam, lParam))\r
+                       {\r
+                               case BN_CLICKED :\r
+                                       EndDialog(hDlg, GET_WM_COMMAND_ID(wParam, lParam));\r
+                                       break;\r
+                       }\r
+                       return(TRUE);\r
+       }\r
+    return(FALSE);\r
+}\r
+\r
 /*----- 文字列の最後に "\" を付ける -------------------------------------------\r
 *\r
 *      Parameter\r
@@ -1179,7 +1203,10 @@ void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist, int
 //             /* "yyyy/mm/dd hh:mm" */\r
                /* "yyyy/mm/dd hh:mm:ss" */\r
                FileTimeToLocalFileTime(Time, &fTime);\r
-               FileTimeToSystemTime(&fTime, &sTime);\r
+               // タイムスタンプのバグ修正\r
+//             FileTimeToSystemTime(&fTime, &sTime);\r
+               if(!FileTimeToSystemTime(&fTime, &sTime))\r
+                       InfoExist = 0;\r
 \r
                // タイムスタンプのバグ修正\r
 //             if(InfoExist & FINFO_DATE)\r
@@ -1419,7 +1446,7 @@ void FormatIniString(char *Str)
 \r
        while(*Str != NUL)\r
        {\r
-               if((*Str != 0x22) && (*Str != '\n'))\r
+               if((*Str != '\"') && (*Str != '\n'))\r
                        *Put++ = *Str;\r
                Str++;\r
        }\r
@@ -1963,3 +1990,87 @@ void CalcExtentSize(TRANSPACKET *Pkt, LONGLONG Size)
        }\r
 }\r
 #endif\r
+\r
+// 高DPI対応\r
+void QueryDisplayDPI()\r
+{\r
+       HDC hDC;\r
+       if(DisplayDPIX == 0)\r
+       {\r
+               if(hDC = GetDC(NULL))\r
+               {\r
+                       DisplayDPIX = GetDeviceCaps(hDC, LOGPIXELSX);\r
+                       DisplayDPIY = GetDeviceCaps(hDC, LOGPIXELSY);\r
+                       ReleaseDC(NULL, hDC);\r
+               }\r
+       }\r
+}\r
+\r
+int CalcPixelX(int x)\r
+{\r
+       QueryDisplayDPI();\r
+       return (x * DisplayDPIX + 96 / 2) / 96;\r
+}\r
+\r
+int CalcPixelY(int y)\r
+{\r
+       QueryDisplayDPI();\r
+       return (y * DisplayDPIY + 96 / 2) / 96;\r
+}\r
+\r
+HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY, int ScaleNumerator, int ScaleDenominator)\r
+{\r
+       HBITMAP hDstBitmap;\r
+       HDC hDC;\r
+       HDC hSrcDC;\r
+       HDC hDstDC;\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
+               if(hSrcDC = CreateCompatibleDC(hDC))\r
+               {\r
+                       if(hDstDC = CreateCompatibleDC(hDC))\r
+                       {\r
+                               if(GetObject(hBitmap, sizeof(BITMAP), &Bitmap) > 0)\r
+                               {\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, COLORONCOLOR);\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
+                               }\r
+                               DeleteDC(hDstDC);\r
+                       }\r
+                       DeleteDC(hSrcDC);\r
+               }\r
+               ReleaseDC(NULL, hDC);\r
+       }\r
+       return hDstBitmap;\r
+}\r
+\r
+// ソフトウェア自動更新\r
+void DecodeLineFeed(char* Str)\r
+{\r
+       char* p;\r
+       p = Str;\r
+       while(p = strstr(p, "\\n"))\r
+       {\r
+               strncpy(p, "\r\n", 2);\r
+       }\r
+}\r
+\r