Revision: 7310 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7310 Author: zmatsuo Date: 2018-12-10 23:59:40 +0900 (Mon, 10 Dec 2018) Log Message: ----------- unicode系文字列取得関数を修正 Modified Paths: -------------- branches/cmake/CMakeLists.txt branches/cmake/teraterm/common/dlglib.c branches/cmake/teraterm/common/i18n.c branches/cmake/teraterm/common/i18n.h branches/cmake/teraterm/common/ttlib.c branches/cmake/teraterm/common/ttlib.h branches/cmake/teraterm/teraterm/CMakeLists.txt branches/cmake/ttpmenu/CMakeLists.txt -------------- next part -------------- Modified: branches/cmake/CMakeLists.txt =================================================================== --- branches/cmake/CMakeLists.txt 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/CMakeLists.txt 2018-12-10 14:59:40 UTC (rev 7310) @@ -4,6 +4,8 @@ project(teraterm_all) option(ENABLE_TTXSAMPLES "TTXSamples" ON) +option(USE_UNICODE_API "unicode" ON) +option(LINK_UNICOWS "unicode APIs for 9x" OFF) set_property(GLOBAL PROPERTY USE_FOLDERS ON) @@ -11,7 +13,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) -if(${CMAKE_GENERATOR} MATCHES "Visual Studio") +if(MSVC) string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) Modified: branches/cmake/teraterm/common/dlglib.c =================================================================== --- branches/cmake/teraterm/common/dlglib.c 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/teraterm/common/dlglib.c 2018-12-10 14:59:40 UTC (rev 7310) @@ -391,7 +391,7 @@ const int nIDDlgItem = infos[i].nIDDlgItem; const char *key = infos[i].key; TCHAR uimsg[MAX_UIMSG]; - get_lang_msgT(key, uimsg, sizeof(uimsg), _T(""), UILanguageFile); + get_lang_msgT(key, uimsg, sizeof(uimsg), _T(""), UILanguageFile); if (uimsg[0] != '\0') { if (nIDDlgItem < 1000) { ModifyMenu(hMenu, nIDDlgItem, MF_BYPOSITION, nIDDlgItem, uimsg); Modified: branches/cmake/teraterm/common/i18n.c =================================================================== --- branches/cmake/teraterm/common/i18n.c 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/teraterm/common/i18n.c 2018-12-10 14:59:40 UTC (rev 7310) @@ -28,13 +28,7 @@ #include "i18n.h" -#include <assert.h> - -DllExport void GetI18nStrT(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile) -{ - assert(FALSE); -} - +#if defined(UNICODE) DllExport void GetI18nStrW(const char *section, const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile) { wchar_t sectionW[64]; @@ -46,6 +40,7 @@ GetPrivateProfileStringW(sectionW, keyW, def, buf, buf_len, iniFileW); RestoreNewLineW(buf); } +#endif DllExport void GetI18nStr(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile) { Modified: branches/cmake/teraterm/common/i18n.h =================================================================== --- branches/cmake/teraterm/common/i18n.h 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/teraterm/common/i18n.h 2018-12-10 14:59:40 UTC (rev 7310) @@ -51,11 +51,18 @@ #define DllExport // direct link #endif -DllExport void GetI18nStrT(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile); +#if defined(UNICODE) DllExport void GetI18nStrW(const char *section, const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile); +#endif DllExport void GetI18nStr(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile); DllExport int GetI18nLogfont(const char *section, const char *key, PLOGFONTA logfont, int ppi, const char *iniFile); +#if defined(_UNICODE) +#define GetI18nStrT(p1, p2, p3, p4, p5, p6) GetI18nStrW(p1, p2, p3, p4, p5, p6) +#else +#define GetI18nStrT(p1, p2, p3, p4, p5, p6) GetI18nStr(p1, p2, p3, p4, p5, p6) +#endif + #ifdef __cplusplus } #endif Modified: branches/cmake/teraterm/common/ttlib.c =================================================================== --- branches/cmake/teraterm/common/ttlib.c 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/teraterm/common/ttlib.c 2018-12-10 14:59:40 UTC (rev 7310) @@ -45,7 +45,7 @@ dwMajorVersion dwMinorVersion dwPlatformId Windows95 4 0 VER_PLATFORM_WIN32_WINDOWS -Windows98 4 10 VER_PLATFORM_WIN32_WINDOWS +Windows98 4 10 VER_PLATFORM_WIN32_WINDOWS WindowsMe 4 90 VER_PLATFORM_WIN32_WINDOWS WindowsNT4.0 4 0 VER_PLATFORM_WIN32_NT Windows2000 5 0 VER_PLATFORM_WIN32_NT @@ -75,7 +75,7 @@ "AUX", "CLOCK$", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "CON", "CONFIG$", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9", "NUL", "PRN", - ".", "..", + ".", "..", NULL }; @@ -101,6 +101,8 @@ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; +static const char *lang_section = "Tera Term"; + void b64encode(PCHAR d, int dsize, PCHAR s, int len) { unsigned int b = 0; @@ -886,7 +888,7 @@ if (sscanf(T, "%d", &v) != 1) { v = defval; } - + return v; } @@ -977,7 +979,7 @@ /* Get SetupFName */ GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName)); - + /* Get LanguageFile name */ GetPrivateProfileStringA("Tera Term", "UILanguageFile", "", Temp, sizeof(Temp), SetupFName); @@ -1004,7 +1006,7 @@ /* Get SetupFName */ GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName)); - + /* Get LanguageFile name */ GetPrivateProfileStringA("Tera Term", entry, "off", Temp, sizeof(Temp), SetupFName); @@ -1012,23 +1014,26 @@ strncpy_s(buf, buflen, Temp, _TRUNCATE); } -void get_lang_msgT(const char *key, TCHAR *buf, int buf_len, const TCHAR *def, const char *iniFile) +void set_lang_section(const char *section) { + lang_section = section; +} + #if defined(UNICODE) - GetI18nStrW("Tera Term", key, buf, buf_len, def, iniFile); -#else - GetI18nStr("Tera Term", key, buf, buf_len, def, iniFile); +void get_lang_msgW(const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile) +{ + GetI18nStrW(lang_section, key, buf, buf_len, def, iniFile); +} #endif -} void get_lang_msg(const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile) { - GetI18nStr("Tera Term", key, buf, buf_len, def, iniFile); + GetI18nStr(lang_section, key, buf, buf_len, def, iniFile); } int get_lang_font(PCHAR key, HWND dlg, PLOGFONTA logfont, HFONT *font, const char *iniFile) { - if (GetI18nLogfont("Tera Term", key, logfont, + if (GetI18nLogfont(lang_section, key, logfont, GetDeviceCaps(GetDC(dlg),LOGPIXELSY), iniFile) == FALSE) { return FALSE; @@ -1078,9 +1083,9 @@ bi.ulFlags = 0; bi.lpfn = setDefaultFolder; bi.lParam = (LPARAM)def; - // \x83t\x83H\x83\x8B\x83_\x91I\x91\xF0\x83_\x83C\x83A\x83\x8D\x83O\x82̕\\x8E\xA6 + // \x83t\x83H\x83\x8B\x83_\x91I\x91\xF0\x83_\x83C\x83A\x83\x8D\x83O\x82̕\\x8E\xA6 pidlBrowse = SHBrowseForFolderA(&bi); - if (pidlBrowse != NULL) { + if (pidlBrowse != NULL) { // PIDL\x8C`\x8E\xAE\x82̖߂\xE8\x92l\x82̃t\x83@\x83C\x83\x8B\x83V\x83X\x83e\x83\x80\x82̃p\x83X\x82ɕϊ\xB7 if (SHGetPathFromIDListA(pidlBrowse, buf)) { // \x8E擾\x90\xAC\x8C\xF7 Modified: branches/cmake/teraterm/common/ttlib.h =================================================================== --- branches/cmake/teraterm/common/ttlib.h 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/teraterm/common/ttlib.h 2018-12-10 14:59:40 UTC (rev 7310) @@ -83,8 +83,11 @@ void GetDefaultSetupFName(char *home, char *dest, int destlen); void GetUILanguageFile(char *buf, int buflen); void GetOnOffEntryInifile(char *entry, char *buf, int buflen); -void get_lang_msg(const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile); -void get_lang_msgT(const char *key, TCHAR *buf, int buf_len, const TCHAR *def, const char *iniFile); +DllExport void set_lang_section(const char *section); +DllExport void get_lang_msg(const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile); +#if defined(UNICODE) +DllExport void get_lang_msgW(const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile); +#endif int get_lang_font(PCHAR key, HWND dlg, PLOGFONTA logfont, HFONT *font, const char *iniFile); DllExport BOOL doSelectFolder(HWND hWnd, char *path, int pathlen, char *def, char *msg); DllExport void OutputDebugPrintf(const char *fmt, ...); @@ -122,6 +125,12 @@ #define CheckFlag(var, flag) (((var) & (flag)) != 0) +#if defined(_UNICODE) +#define get_lang_msgT(p1, p2, p3, p4, p5) get_lang_msgW(p1, p2, p3, p4, p5) +#else +#define get_lang_msgT(p1, p2, p3, p4, p5) get_lang_msg(p1, p2, p3, p4, p5) +#endif + #ifdef __cplusplus } #endif Modified: branches/cmake/teraterm/teraterm/CMakeLists.txt =================================================================== --- branches/cmake/teraterm/teraterm/CMakeLists.txt 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/teraterm/teraterm/CMakeLists.txt 2018-12-10 14:59:40 UTC (rev 7310) @@ -1,8 +1,5 @@ project(teraterm) -option(USE_UNICODE_API "unicode" ON) -option(LINK_UNICOWS "unicode APIs for 9x" OFF) - include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_SFMT.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_oniguruma.cmake) Modified: branches/cmake/ttpmenu/CMakeLists.txt =================================================================== --- branches/cmake/ttpmenu/CMakeLists.txt 2018-12-10 14:41:18 UTC (rev 7309) +++ branches/cmake/ttpmenu/CMakeLists.txt 2018-12-10 14:59:40 UTC (rev 7310) @@ -1,13 +1,22 @@ -project(ttpmenu) +project(ttpmenu) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/") -set(SRC +set(COMMON_SRC ../teraterm/common/ttlib.c + ../teraterm/common/i18n.c + # TODO ↑ in dll ../teraterm/common/ttlib.h - ../teraterm/common/i18n.c ../teraterm/common/i18n.h + ) +source_group( + "common" + FILES + ${COMMON_SRC} + ) + +set(SRC resource.h registry.cpp ttpmenu.cpp @@ -27,6 +36,7 @@ add_executable( ttpmenu WIN32 ${SRC} + ${COMMON_SRC} ) target_link_libraries(