Revision: 8627 https://osdn.net/projects/ttssh2/scm/svn/commits/8627 Author: zmatsuo Date: 2020-03-27 00:39:51 +0900 (Fri, 27 Mar 2020) Log Message: ----------- _GetSaveFileNameW() を追加 Modified Paths: -------------- branches/unicode_macro/teraterm/common/compat_win.cpp branches/unicode_macro/teraterm/common/compat_win.h branches/unicode_macro/teraterm/common/layer_for_unicode.h branches/unicode_macro/teraterm/common/layer_for_unicode_comctl32.cpp -------------- next part -------------- Modified: branches/unicode_macro/teraterm/common/compat_win.cpp =================================================================== --- branches/unicode_macro/teraterm/common/compat_win.cpp 2020-03-26 15:39:40 UTC (rev 8626) +++ branches/unicode_macro/teraterm/common/compat_win.cpp 2020-03-26 15:39:51 UTC (rev 8627) @@ -106,7 +106,8 @@ INT_PTR (WINAPI *pPropertySheetW)(LPCPROPSHEETHEADERW constPropSheetHeaderPointer); // comdlg32 -BOOL (WINAPI *pGetOpenFileNameW)(LPOPENFILENAMEW Arg1); +BOOL (WINAPI *pGetOpenFileNameW)(LPOPENFILENAMEW ofnW); +BOOL (WINAPI *pGetSaveFileNameW)(LPOPENFILENAMEW ofnW); /** * GetConsoleWindow() \x82Ɠ\xAF\x82\xB6\x93\xAE\x8D\xEC\x82\xF0\x82\xB7\x82\xE9 @@ -245,6 +246,7 @@ static const APIInfo Lists_comdlg32[] = { #ifndef UNICODE_API_DISABLE { "GetOpenFileNameW", (void **)&pGetOpenFileNameW }, + { "GetSaveFileNameW", (void **)&pGetSaveFileNameW }, #endif {}, }; Modified: branches/unicode_macro/teraterm/common/compat_win.h =================================================================== --- branches/unicode_macro/teraterm/common/compat_win.h 2020-03-26 15:39:40 UTC (rev 8626) +++ branches/unicode_macro/teraterm/common/compat_win.h 2020-03-26 15:39:51 UTC (rev 8627) @@ -123,7 +123,8 @@ extern void (WINAPI *pOutputDebugStringW)(LPCWSTR lpOutputString); extern DWORD (WINAPI *pGetCurrentDirectoryW)(DWORD nBufferLength, LPWSTR lpBuffer); extern BOOL (WINAPI *pSetCurrentDirectoryW)(LPCWSTR lpPathName); -extern BOOL (WINAPI *pGetOpenFileNameW)(LPOPENFILENAMEW Arg1); +extern BOOL (WINAPI *pGetOpenFileNameW)(LPOPENFILENAMEW ofnW); +extern BOOL (WINAPI *pGetSaveFileNameW)(LPOPENFILENAMEW ofnW); void WinCompatInit(); Modified: branches/unicode_macro/teraterm/common/layer_for_unicode.h =================================================================== --- branches/unicode_macro/teraterm/common/layer_for_unicode.h 2020-03-26 15:39:40 UTC (rev 8626) +++ branches/unicode_macro/teraterm/common/layer_for_unicode.h 2020-03-26 15:39:51 UTC (rev 8627) @@ -129,7 +129,8 @@ //INT_PTR _PropertySheetW(PROPSHEETHEADERW_V1 *constPropSheetHeaderPointer); // Comdlg32.lib -BOOL _GetOpenFileNameW(LPOPENFILENAMEW Arg1); +BOOL _GetOpenFileNameW(LPOPENFILENAMEW ofnW); +BOOL _GetSaveFileNameW(LPOPENFILENAMEW ofnW); // shell32.lib UINT _DragQueryFileW(HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch); Modified: branches/unicode_macro/teraterm/common/layer_for_unicode_comctl32.cpp =================================================================== --- branches/unicode_macro/teraterm/common/layer_for_unicode_comctl32.cpp 2020-03-26 15:39:40 UTC (rev 8626) +++ branches/unicode_macro/teraterm/common/layer_for_unicode_comctl32.cpp 2020-03-26 15:39:51 UTC (rev 8627) @@ -114,12 +114,8 @@ return filterA; } -BOOL _GetOpenFileNameW(LPOPENFILENAMEW ofnW) +static BOOL GetOpenSaveFileNameA(BOOL (WINAPI *fn)(LPOPENFILENAMEA ofnA), LPOPENFILENAMEW ofnW) { - if (pGetOpenFileNameW != NULL) { - return pGetOpenFileNameW(ofnW); - } - char fileA[MAX_PATH]; WideCharToMultiByte(CP_ACP, 0, ofnW->lpstrFile, -1, fileA, _countof(fileA), NULL,NULL); @@ -131,8 +127,8 @@ ofnA.lpstrFile = fileA; ofnA.nMaxFile = _countof(fileA); ofnA.lpstrTitle = ToCharW(ofnW->lpstrTitle); - ofnA.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; - BOOL result = GetOpenFileNameA(&ofnA); + ofnA.Flags = ofnW->Flags; + BOOL result = fn(&ofnA); if (result) { MultiByteToWideChar(CP_ACP, 0, fileA, _countof(fileA), ofnW->lpstrFile, ofnW->nMaxFile); } @@ -140,3 +136,21 @@ free((void *)ofnA.lpstrTitle); return result; } + +BOOL _GetOpenFileNameW(LPOPENFILENAMEW ofnW) +{ + if (pGetOpenFileNameW != NULL) { + return pGetOpenFileNameW(ofnW); + } + + return GetOpenSaveFileNameA(GetOpenFileNameA, ofnW); +} + +BOOL _GetSaveFileNameW(LPOPENFILENAMEW ofnW) +{ + if (pGetSaveFileNameW != NULL) { + return pGetSaveFileNameW(ofnW); + } + + return GetOpenSaveFileNameA(GetSaveFileNameA, ofnW); +}