[Ttssh2-commit] [7229] ttpdlg.dll ダイアログを高DPI対応、ttermpro.exe と一体化

Back to archive index

scmno****@osdn***** scmno****@osdn*****
2018年 9月 7日 (金) 01:59:56 JST


Revision: 7229
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7229
Author:   zmatsuo
Date:     2018-09-07 01:59:55 +0900 (Fri, 07 Sep 2018)
Log Message:
-----------
ttpdlg.dll ダイアログを高DPI対応、ttermpro.exe と一体化

- tek以外はPer-Display DPI aware対応になった

Modified Paths:
--------------
    branches/cmake/teraterm/CMakeLists.txt
    branches/cmake/teraterm/common/dlglib.c
    branches/cmake/teraterm/common/dlglib_cpp.cpp
    branches/cmake/teraterm/common/dlglib_tmpl.cpp
    branches/cmake/teraterm/teraterm/CMakeLists.txt
    branches/cmake/teraterm/teraterm/tmfc_frame.cpp
    branches/cmake/teraterm/teraterm/ttdialog.c
    branches/cmake/teraterm/ttpdlg/CMakeLists.txt
    branches/cmake/teraterm/ttpdlg/ttdlg.c
    branches/cmake/teraterm/ttpdlg/ttpdlg.rc

Added Paths:
-----------
    branches/cmake/teraterm/ttpdlg/ttdlg.h

-------------- next part --------------
Modified: branches/cmake/teraterm/CMakeLists.txt
===================================================================
--- branches/cmake/teraterm/CMakeLists.txt	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/CMakeLists.txt	2018-09-06 16:59:55 UTC (rev 7229)
@@ -4,10 +4,12 @@
   ttpcmn
   PROPERTIES FOLDER teraterm)
 
-add_subdirectory(ttpdlg)
-set_target_properties(
-  ttpdlg
-  PROPERTIES FOLDER teraterm)
+if(0)
+  add_subdirectory(ttpdlg)
+  set_target_properties(
+	ttpdlg
+	PROPERTIES FOLDER teraterm)
+endif()
 
 add_subdirectory(ttpfile)
 set_target_properties(

Modified: branches/cmake/teraterm/common/dlglib.c
===================================================================
--- branches/cmake/teraterm/common/dlglib.c	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/common/dlglib.c	2018-09-06 16:59:55 UTC (rev 7229)
@@ -362,6 +362,7 @@
 	int i;
 	for (i = 0 ; i < infoCount; i++) {
 		const char *key = infos[i].key;
+#if 1
 		char uimsg[MAX_UIMSG];
 		get_lang_msg(key, uimsg, sizeof(uimsg), "", UILanguageFile);
 		if (uimsg[0] != '\0') {
@@ -372,24 +373,20 @@
 				SetDlgItemText(hDlgWnd, nIDDlgItem, uimsg);
 			}
 		}
-	}
-}
-
-HFONT SetDlgFonts(HWND hDlg, const int nIDDlgItems[], int nIDDlgItemCount,
-				  const char *UILanguageFile, PCHAR key)
-{
-	HFONT hPrevFont = (HFONT)SendMessage(hDlg, WM_GETFONT, 0, 0);
-	LOGFONT logfont;
-	HFONT hNewFont;
-	if (key == NULL) key = "DLG_TAHOMA_FONT";
-	GetObject(hPrevFont, sizeof(LOGFONT), &logfont);
-	if (get_lang_font(key, hDlg, &logfont, &hNewFont, UILanguageFile)) {
-		int i;
-		for (i = 0 ; i < nIDDlgItemCount ; i++) {
-			const int nIDDlgItem = nIDDlgItems[i];
-			SendDlgItemMessage(hDlg, nIDDlgItem, WM_SETFONT, (WPARAM)hNewFont, MAKELPARAM(TRUE,0));
+#else
+		char uimsg_ini[MAX_UIMSG];
+		get_lang_msg(key, uimsg_ini, sizeof(uimsg_ini), "", UILanguageFile);
+		if (uimsg_ini[0] != '\0') {
+			wchar_t uimsg[MAX_UIMSG];
+			MultiByteToWideChar(932, 0, uimsg_ini, -1, uimsg, _countof(uimsg));
+			const int nIDDlgItem = infos[i].nIDDlgItem;
+			if (nIDDlgItem == 0) {
+				SetWindowTextW(hDlgWnd, uimsg);
+			} else {
+				SetDlgItemTextW(hDlgWnd, nIDDlgItem, uimsg);
+			}
 		}
+#endif
 	}
-	return hNewFont;
 }
 

Modified: branches/cmake/teraterm/common/dlglib_cpp.cpp
===================================================================
--- branches/cmake/teraterm/common/dlglib_cpp.cpp	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/common/dlglib_cpp.cpp	2018-09-06 16:59:55 UTC (rev 7229)
@@ -113,10 +113,7 @@
 	TTDialogData *data = (TTDialogData *)GetWindowLongPtr(hDlgWnd, DWLP_USER);
 	if (msg == WM_INITDIALOG) {
 		TTDialogData *data = (TTDialogData *)lParam;
-		LONG_PTR r = SetWindowLongPtr(hDlgWnd, DWLP_USER, 0);
-		DWORD d = GetLastError();
 		SetWindowLongPtr(hDlgWnd, DWLP_USER, (LONG_PTR)lParam);
-		SetWindowLongPtr(hDlgWnd, DWLP_USER, (LONG_PTR)lParam);
 		lParam = data->ParamInit;
 	}
 

Modified: branches/cmake/teraterm/common/dlglib_tmpl.cpp
===================================================================
--- branches/cmake/teraterm/common/dlglib_tmpl.cpp	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/common/dlglib_tmpl.cpp	2018-09-06 16:59:55 UTC (rev 7229)
@@ -29,8 +29,8 @@
 /* Routines for dialog boxes */
 
 #include "dlglib.h"
-#include "tttypes.h"		// for TTSet
-#include "ttwinman.h"		// for ts
+//#include "tttypes.h"		// for TTSet
+//#include "ttwinman.h"		// for ts
 
 #include <wchar.h>
 #include <assert.h>
@@ -415,6 +415,7 @@
 	size_t *PrevTemplSize, size_t *NewTemplSize)
 {
 	HRSRC hResource = ::FindResource(hInst, lpTemplateName, RT_DIALOG);
+	assert(hResource != NULL);
 	HANDLE hDlgTemplate = ::LoadResource(hInst, hResource);
 	const DLGTEMPLATE *src = (DLGTEMPLATE *)::LockResource(hDlgTemplate);
 
@@ -446,7 +447,7 @@
 void TTSetDlgFont(const char *face, int height, int charset)
 {
 	if (face != NULL) {
-		mbstowcs(FontFaceName, face, LF_FACESIZE);
+		mbstowcs(FontFaceName, face, LF_FACESIZE);		// TODO MultiByteToWideChar()を使う
 	} else {
 		FontFaceName[0] = L'\0';
 	}
@@ -454,6 +455,7 @@
 	FontCharSet = charset;
 }
 
+#if 0
 static void initFont()
 {
 	LOGFONT logfont;
@@ -469,6 +471,11 @@
 		TTSetDlgFont((wchar_t *)NULL, 0, 0);
 	}
 }
+#endif
+static void initFont()
+{
+	TTSetDlgFont(L"MS Pゴシック",12,128);
+}
 
 DLGTEMPLATE *TTGetNewDlgTemplate(
 	HINSTANCE hInst, const DLGTEMPLATE *src,

Modified: branches/cmake/teraterm/teraterm/CMakeLists.txt
===================================================================
--- branches/cmake/teraterm/teraterm/CMakeLists.txt	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/teraterm/CMakeLists.txt	2018-09-06 16:59:55 UTC (rev 7229)
@@ -108,6 +108,12 @@
   WSAAsyncGetAddrInfo.h
   ttutil.c
   ttutil.h
+  #
+  ${CMAKE_CURRENT_BINARY_DIR}/svnversion.h
+  #
+  ../ttpdlg/ttdlg.c
+  ../ttpdlg/ttpdlg.rc
+  #
   ${COMMON_SRC}
   )
 
@@ -116,7 +122,9 @@
   ../ttpfile
   ../ttpdlg
   ${SFMT_INCLUDE_DIRS}
+  ${ONIGURUMA_INCLUDE_DIRS}
   .
+  ${CMAKE_CURRENT_BINARY_DIR}
   )
 
 link_directories(
@@ -124,10 +132,6 @@
   ${SFMT_LIBRARY_DIRS}
   )
 
-set(CMAKE_MFC_FLAG 1)
-
-#set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:nafxcw.lib /NODEFAULTLIB:LIBCMT.lib")
-#set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:nafxcwd.lib /NODEFAULTLIB:LIBCMTD.lib")
 if (MSVC)
   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:imagehlp.dll /DELAYLOAD:user32.dll /DELAYLOAD:shell32.dll")
 endif()
@@ -143,17 +147,19 @@
   ${SRC}
   )
 
+set_target_properties(
+  teraterm
+  PROPERTIES
+  OUTPUT_NAME "ttermpro"
+  )
+
 target_link_libraries(
   teraterm
   ttpcmn
-  ttpdlg
   ttpfile
   ttpset
   ttptek
-#  optimized nafxcw.lib
-#  debug nafxcwd.lib
-#  optimized LIBCMT.lib
-#  debug LIBCMTD.lib
+#  ttpdlg
   optimized onig.lib
   debug onigd.lib
   Comctl32.lib
@@ -166,8 +172,20 @@
 add_dependencies(
   teraterm
   ttpcmn
-  ttpdlg
+#  ttpdlg
   ttpfile
   ttpset
   ttptek
   )
+
+## svnversion.h
+if(EXISTS ${CMAKE_SOURCE_DIR}/.svn)
+  INCLUDE(FindSubversion)
+endif()
+if(Subversion_FOUND)
+  Subversion_WC_INFO(${CMAKE_SOURCE_DIR} TT)
+  FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/svnversion.h "#define SVNVERSION ${TT_WC_REVISION}\n")
+  message("rev.${TT_WC_REVISION}")
+else()
+  FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/svnversion.h "#undef SVNVERSION\n")
+endif()

Modified: branches/cmake/teraterm/teraterm/tmfc_frame.cpp
===================================================================
--- branches/cmake/teraterm/teraterm/tmfc_frame.cpp	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/teraterm/tmfc_frame.cpp	2018-09-06 16:59:55 UTC (rev 7229)
@@ -28,7 +28,6 @@
 	DWORD dwExStyle)
 {
 	pseudoPtr = this;
-	DWORD s = WS_OVERLAPPEDWINDOW;
 	HWND hWnd = ::CreateWindowExA(
 		0,
 		lpszClassName,

Modified: branches/cmake/teraterm/teraterm/ttdialog.c
===================================================================
--- branches/cmake/teraterm/teraterm/ttdialog.c	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/teraterm/ttdialog.c	2018-09-06 16:59:55 UTC (rev 7229)
@@ -32,6 +32,7 @@
 #include "tttypes.h"
 #include "ttplug.h" /* TTPLUG */
 #include "ttutil.h"
+#include "ttdlg.h"
 
 #include "ttdialog.h"
 #include "ttwinman.h"
@@ -39,6 +40,20 @@
 static HMODULE HTTDLG = NULL;
 static int TTDLGUseCount = 0;
 
+PSetupTerminal SetupTerminal = _SetupTerminal;
+PSetupWin SetupWin = _SetupWin;
+PSetupKeyboard SetupKeyboard = _SetupKeyboard;
+PSetupSerialPort SetupSerialPort = _SetupSerialPort;
+PSetupTCPIP SetupTCPIP = _SetupTCPIP;
+PGetHostName GetHostName = _GetHostName;
+PChangeDirectory ChangeDirectory = _ChangeDirectory;
+PAboutDialog AboutDialog = _AboutDialog;
+PChooseFontDlg ChooseFontDlg = _ChooseFontDlg;
+PSetupGeneral SetupGeneral = _SetupGeneral;
+PWindowWindow WindowWindow = _WindowWindow;
+PTTDLGSetUILanguageFile TTDLGSetUILanguageFile = _TTDLGSetUILanguageFile;
+
+#if 0
 PSetupTerminal SetupTerminal;
 PSetupWin SetupWin;
 PSetupKeyboard SetupKeyboard;
@@ -51,6 +66,7 @@
 PSetupGeneral SetupGeneral;
 PWindowWindow WindowWindow;
 PTTDLGSetUILanguageFile TTDLGSetUILanguageFile;
+#endif
 
 static const GetProcAddressList ProcList[] = {
 	{ &SetupTerminal, "SetupTerminal", 8 },
@@ -77,6 +93,17 @@
 
 BOOL LoadTTDLG()
 {
+	return TRUE;
+}
+
+BOOL FreeTTDLG()
+{
+	return TRUE;
+}
+
+#if 0
+BOOL LoadTTDLG()
+{
 	if (TTDLGUseCount == 0) {
 		BOOL ret;
 
@@ -107,4 +134,5 @@
 	}
 	return TRUE;
 }
+#endif
 

Modified: branches/cmake/teraterm/ttpdlg/CMakeLists.txt
===================================================================
--- branches/cmake/teraterm/ttpdlg/CMakeLists.txt	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/ttpdlg/CMakeLists.txt	2018-09-06 16:59:55 UTC (rev 7229)
@@ -24,6 +24,8 @@
 set(COMMON_SRC
   ../common/dlglib.c
   ../common/dlglib.h
+  ../common/dlglib_cpp.cpp
+  ../common/dlglib_tmpl.cpp
   ../common/ttlib.c
   ../common/ttlib.h
   ../common/teraterm.ico

Modified: branches/cmake/teraterm/ttpdlg/ttdlg.c
===================================================================
--- branches/cmake/teraterm/ttpdlg/ttdlg.c	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/ttpdlg/ttdlg.c	2018-09-06 16:59:55 UTC (rev 7229)
@@ -44,6 +44,7 @@
 #include "ttcommon.h"
 #include "dlg_res.h"
 #include "svnversion.h"
+#include "ttdlg.h"
 
 // Oniguruma: Regular expression library
 #define ONIG_EXTERN extern
@@ -51,7 +52,8 @@
 #undef ONIG_EXTERN
 
 #undef DllExport
-#define DllExport __declspec(dllexport) 
+//#define DllExport __declspec(dllexport) 
+#define DllExport
 
 static char * ProtocolFamilyList[] = { "UNSPEC", "IPv6", "IPv4", NULL };
 
@@ -58,20 +60,20 @@
 #undef EFFECT_ENABLED	// \x83G\x83t\x83F\x83N\x83g\x82̗L\x8C\xF8\x89”\xDB
 #undef TEXTURE_ENABLED	// \x83e\x83N\x83X\x83`\x83\x83\x82̗L\x8C\xF8\x89”\xDB
 
-#include "compat_w95.h"
+//#include "compat_w95.h"
 
-static HANDLE hInst;
+#undef DialogBoxParam
+#define DialogBoxParam(p1,p2,p3,p4,p5) \
+	TTDialogBoxParam(p1,p2,p3,p4,p5)
+#undef DialogBox
+#define DialogBox(p1,p2,p3,p4) \
+	TTDialogBox(p1,p2,p3,p4)
+#undef EndDialog
+#define EndDialog(p1,p2) \
+	TTEndDialog(p1, p2)
 
-static HFONT DlgAboutFont;
-static HFONT DlgDirFont;
-static HFONT DlgGenFont;
-static HFONT DlgHostFont;
-static HFONT DlgKeybFont;
-static HFONT DlgSerialFont;
-static HFONT DlgTcpipFont;
-static HFONT DlgTermFont;
-static HFONT DlgWinFont;
-static HFONT DlgWinlistFont;
+//static HANDLE hInst;
+extern HANDLE hInst;
 
 static char UILanguageFile[MAX_PATH];
 
@@ -114,13 +116,26 @@
 
 static BOOL CALLBACK TermDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfosCom[] = {
+		{ 0, "DLG_TERM_TITLE" },
+		{ IDC_TERMWIDTHLABEL, "DLG_TERM_WIDTHLABEL" },
+		{ IDC_TERMISWIN, "DLG_TERM_ISWIN" },
+		{ IDC_TERMRESIZE, "DLG_TERM_RESIZE" },
+		{ IDC_TERMNEWLINE, "DLG_TERM_NEWLINE" },
+		{ IDC_TERMCRRCVLABEL, "DLG_TERM_CRRCV" },
+		{ IDC_TERMCRSENDLABEL, "DLG_TERM_CRSEND" },
+		{ IDC_TERMIDLABEL, "DLG_TERM_ID" },
+		{ IDC_TERMLOCALECHO, "DLG_TERM_LOCALECHO" },
+		{ IDC_TERMANSBACKTEXT, "DLG_TERM_ANSBACK" },
+		{ IDC_TERMAUTOSWITCH, "DLG_TERM_AUTOSWITCH" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_TERMHELP, "BTN_HELP" },
+	};
 	PTTSet ts;
 	WORD w;
 	//  char Temp[HostNameMaxLength + 1]; // 81(yutaka)
 	char Temp[81]; // 81(yutaka)
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -127,164 +142,37 @@
 			ts = (PTTSet)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgTermFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_TERMWIDTHLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMWIDTH, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMX, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMHEIGHT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMISWIN, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMRESIZE, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMNEWLINE, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMCRRCVLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMCRRCV, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMCRSENDLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMCRSEND, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMIDLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMID, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMLOCALECHO, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMANSBACKTEXT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMANSBACK, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMAUTOSWITCH, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERMHELP, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				if (ts->Language==IdJapanese) {
-					SendDlgItemMessage(Dialog, IDC_TERMKANJILABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANJI, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANA, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANJISENDLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANJISEND, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANASEND, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKINTEXT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKIN, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKOUTTEXT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKOUT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_LOCALE_LABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_LOCALE_EDIT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_CODEPAGE_LABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_CODEPAGE_EDIT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				}
-				else if (ts->Language==IdRussian) {
-					SendDlgItemMessage(Dialog, IDC_TERMRUSSCHARSET, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMRUSSHOSTLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMRUSSHOST, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMRUSSCLIENTLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMRUSSCLIENT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMRUSSFONTLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMRUSSFONT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				}
-				else if (ts->Language==IdUtf8 || ts->Language==IdKorean) {
-					SendDlgItemMessage(Dialog, IDC_TERMKANJILABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANJI, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANJISENDLABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_TERMKANJISEND, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_LOCALE_LABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_LOCALE_EDIT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_CODEPAGE_LABEL, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-					SendDlgItemMessage(Dialog, IDC_CODEPAGE_EDIT, WM_SETFONT, (WPARAM)DlgTermFont, MAKELPARAM(TRUE,0));
-				}
-			}
-			else {
-				DlgTermFont = NULL;
-			}
-
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMWIDTHLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_WIDTHLABEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMWIDTHLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMISWIN, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_ISWIN", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMISWIN, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMRESIZE, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_RESIZE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMRESIZE, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMNEWLINE, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_NEWLINE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMNEWLINE, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMCRRCVLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_CRRCV", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMCRRCVLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMCRSENDLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_CRSEND", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMCRSENDLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMIDLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_ID", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMIDLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMLOCALECHO, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_LOCALECHO", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMLOCALECHO, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMANSBACKTEXT, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_ANSBACK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMANSBACKTEXT, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMAUTOSWITCH, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TERM_AUTOSWITCH", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMAUTOSWITCH, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TERMHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TERMHELP, uimsg);
+			SetDlgTexts(Dialog, TextInfosCom, _countof(TextInfosCom), UILanguageFile);
 			if ( ts->Language==IdJapanese ) {
-				GetDlgItemText(Dialog, IDC_TERMKANJILABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_KANJI", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKANJILABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMKANA, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_KANA", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKANA, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMKANJISENDLABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_KANJISEND", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKANJISENDLABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMKANASEND, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_KANASEND", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKANASEND, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMKINTEXT, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_KIN", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKINTEXT, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMKOUTTEXT, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_KOUT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKOUTTEXT, uimsg);
-				GetDlgItemText(Dialog, IDC_LOCALE_LABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_LOCALE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_LOCALE_LABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_CODEPAGE_LABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_CODEPAGE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_CODEPAGE_LABEL, uimsg);
+				static const DlgTextInfo TextInfosJp[] = {
+					{ IDC_TERMKANJILABEL, "DLG_TERM_KANJI" },
+					{ IDC_TERMKANA, "DLG_TERM_KANA" },
+					{ IDC_TERMKANJISENDLABEL, "DLG_TERM_KANJISEND" },
+					{ IDC_TERMKANASEND, "DLG_TERM_KANASEND" },
+					{ IDC_TERMKINTEXT, "DLG_TERM_KIN" },
+					{ IDC_TERMKOUTTEXT, "DLG_TERM_KOUT" },
+					{ IDC_LOCALE_LABEL, "DLG_TERM_LOCALE" },
+					{ IDC_CODEPAGE_LABEL, "DLG_TERM_CODEPAGE" },
+				};
+				SetDlgTexts(Dialog, TextInfosJp, _countof(TextInfosJp), UILanguageFile);
 			}
 			else if ( ts->Language==IdRussian ) {
-				GetDlgItemText(Dialog, IDC_TERMRUSSCHARSET, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_RUSSCHARSET", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMRUSSCHARSET, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMRUSSHOSTLABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_RUSSHOST", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMRUSSHOSTLABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMRUSSCLIENTLABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_RUSSCLIENT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMRUSSCLIENTLABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMRUSSFONTLABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_RUSSFONT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMRUSSFONTLABEL, uimsg);
+				static const DlgTextInfo TextInfosRu[] = {
+					{ IDC_TERMRUSSCHARSET, "DLG_TERM_RUSSCHARSET" },
+					{ IDC_TERMRUSSHOSTLABEL, "DLG_TERM_RUSSHOST" },
+					{ IDC_TERMRUSSCLIENTLABEL, "DLG_TERM_RUSSCLIENT" },
+					{ IDC_TERMRUSSFONTLABEL, "DLG_TERM_RUSSFONT" },
+				};
+				SetDlgTexts(Dialog, TextInfosRu, _countof(TextInfosRu), UILanguageFile);
 			}
 			else if (ts->Language==IdUtf8 || ts->Language==IdKorean) {
-				GetDlgItemText(Dialog, IDC_TERMKANJILABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERMK_KANJI", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKANJILABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_TERMKANJISENDLABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERMK_KANJISEND", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_TERMKANJISENDLABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_LOCALE_LABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_LOCALE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_LOCALE_LABEL, uimsg);
-				GetDlgItemText(Dialog, IDC_CODEPAGE_LABEL, uimsg2, sizeof(uimsg2));
-				get_lang_msg("DLG_TERM_CODEPAGE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-				SetDlgItemText(Dialog, IDC_CODEPAGE_LABEL, uimsg);
+				static const DlgTextInfo TextInfosKo[] = {
+					{ IDC_TERMKANJILABEL, "DLG_TERMK_KANJI" },
+					{ IDC_TERMKANJISENDLABEL, "DLG_TERMK_KANJISEND" },
+					{ IDC_LOCALE_LABEL, "DLG_TERM_LOCALE" },
+					{ IDC_CODEPAGE_LABEL, "DLG_TERM_CODEPAGE" },
+				};
+				SetDlgTexts(Dialog, TextInfosKo, _countof(TextInfosKo), UILanguageFile);
 			}
 
 			SetDlgItemInt(Dialog,IDC_TERMWIDTH,ts->TerminalWidth,FALSE);
@@ -493,16 +381,10 @@
 
 					}
 					EndDialog(Dialog, 1);
-					if (DlgTermFont != NULL) {
-						DeleteObject(DlgTermFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgTermFont != NULL) {
-						DeleteObject(DlgTermFont);
-					}
 					return TRUE;
 
 				case IDC_TERMISWIN:
@@ -631,14 +513,40 @@
 
 static BOOL CALLBACK WinDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_WIN_TITLE" },
+		{ IDC_WINTITLELABEL, "DLG_WIN_TITLELABEL" },
+		{ IDC_WINCURSOR, "DLG_WIN_CURSOR" },
+		{ IDC_WINBLOCK, "DLG_WIN_BLOCK" },
+		{ IDC_WINVERT, "DLG_WIN_VERT" },
+		{ IDC_WINHORZ, "DLG_WIN_HORZ" },
+		{ IDC_FONTBOLD, "DLG_WIN_BOLDFONT" },
+		{ IDC_WINHIDETITLE, "DLG_WIN_HIDETITLE" },
+		{ IDC_WINHIDEMENU, "DLG_WIN_HIDEMENU" },
+		{ IDC_WINCOLOREMU, "DLG_WIN_COLOREMU" },
+		{ IDC_WINAIXTERM16, "DLG_WIN_AIXTERM16" },
+		{ IDC_WINXTERM256, "DLG_WIN_XTERM256" },
+		{ IDC_WINSCROLL1, "DLG_WIN_SCROLL1" },
+		{ IDC_WINSCROLL3, "DLG_WIN_SCROLL3" },
+		{ IDC_WINCOLOR, "DLG_WIN_COLOR" },
+		{ IDC_WINTEXT, "DLG_WIN_TEXT" },
+		{ IDC_WINBACK, "DLG_WIN_BG" },
+		{ IDC_WINATTRTEXT, "DLG_WIN_ATTRIB" },
+		{ IDC_WINREV, "DLG_WIN_REVERSE" },
+		{ IDC_WINREDLABEL, "DLG_WIN_R" },
+		{ IDC_WINGREENLABEL, "DLG_WIN_G" },
+		{ IDC_WINBLUELABEL, "DLG_WIN_B" },
+		{ IDC_WINUSENORMALBG, "DLG_WIN_ALWAYSBG" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_WINHELP, "BTN_HELP" },
+	};
 	PTTSet ts;
 	HWND Wnd, HRed, HGreen, HBlue;
 	int IAttr, IOffset;
 	WORD i, pos, ScrollCode, NewPos;
 	HDC DC;
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
+	char uimsg[MAX_UIMSG];
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -645,124 +553,7 @@
 			ts = (PTTSet)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgWinFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_WINTITLELABEL, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINTITLE, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINCURSOR, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINBLOCK, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINVERT, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINHORZ, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_FONTBOLD, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINHIDETITLE, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINHIDEMENU, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINCOLOREMU, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINAIXTERM16, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINXTERM256, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINSCROLL1, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINSCROLL3, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINSCROLL2, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINCOLOR, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINTEXT, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINBACK, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINREV, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINATTRTEXT, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINATTR, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINREDLABEL, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINRED, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINGREENLABEL, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINGREEN, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINBLUELABEL, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINBLUE, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINUSENORMALBG, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINHELP, WM_SETFONT, (WPARAM)DlgWinFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgWinFont = NULL;
-			}
-
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_WINTITLELABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_TITLELABEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINTITLELABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_WINCURSOR, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_CURSOR", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINCURSOR, uimsg);
-			GetDlgItemText(Dialog, IDC_WINBLOCK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_BLOCK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINBLOCK, uimsg);
-			GetDlgItemText(Dialog, IDC_WINVERT, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_VERT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINVERT, uimsg);
-			GetDlgItemText(Dialog, IDC_WINHORZ, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_HORZ", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINHORZ, uimsg);
-			GetDlgItemText(Dialog, IDC_FONTBOLD, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_BOLDFONT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_FONTBOLD, uimsg);
-			GetDlgItemText(Dialog, IDC_WINHIDETITLE, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_HIDETITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINHIDETITLE, uimsg);
-			GetDlgItemText(Dialog, IDC_WINHIDEMENU, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_HIDEMENU", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINHIDEMENU, uimsg);
-			GetDlgItemText(Dialog, IDC_WINCOLOREMU, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_COLOREMU", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINCOLOREMU, uimsg);
-			GetDlgItemText(Dialog, IDC_WINAIXTERM16, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_AIXTERM16", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINAIXTERM16, uimsg);
-			GetDlgItemText(Dialog, IDC_WINXTERM256, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_XTERM256", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINXTERM256, uimsg);
-			GetDlgItemText(Dialog, IDC_WINSCROLL1, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_SCROLL1", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINSCROLL1, uimsg);
-			GetDlgItemText(Dialog, IDC_WINSCROLL3, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_SCROLL3", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINSCROLL3, uimsg);
-			GetDlgItemText(Dialog, IDC_WINCOLOR, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_COLOR", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINCOLOR, uimsg);
-			GetDlgItemText(Dialog, IDC_WINTEXT, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_TEXT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINTEXT, uimsg);
-			GetDlgItemText(Dialog, IDC_WINBACK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_BG", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINBACK, uimsg);
-			GetDlgItemText(Dialog, IDC_WINATTRTEXT, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_ATTRIB", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINATTRTEXT, uimsg);
-			GetDlgItemText(Dialog, IDC_WINREV, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_REVERSE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINREV, uimsg);
-			GetDlgItemText(Dialog, IDC_WINREDLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_R", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINREDLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_WINGREENLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_G", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINGREENLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_WINBLUELABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_B", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINBLUELABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_WINUSENORMALBG, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WIN_ALWAYSBG", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINUSENORMALBG, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_WINHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINHELP, uimsg);
-
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
 			SetDlgItemText(Dialog, IDC_WINTITLE, ts->Title);
 			SendDlgItemMessage(Dialog, IDC_WINTITLE, EM_LIMITTEXT,
 			                   sizeof(ts->Title)-1, 0);
@@ -1075,16 +866,10 @@
 						GetRB(Dialog,&ts->CursorShape,IDC_WINBLOCK,IDC_WINHORZ);
 					}
 					EndDialog(Dialog, 1);
-					if (DlgWinFont != NULL) {
-						DeleteObject(DlgWinFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgWinFont != NULL) {
-						DeleteObject(DlgWinFont);
-					}
 					return TRUE;
 
 				case IDC_WINHIDETITLE:
@@ -1239,10 +1024,21 @@
 
 static BOOL CALLBACK KeybDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_KEYB_TITLE" },
+		{ IDC_KEYBTRANS, "DLG_KEYB_TRANSMIT" },
+		{ IDC_KEYBBS, "DLG_KEYB_BS" },
+		{ IDC_KEYBDEL, "DLG_KEYB_DEL" },
+		{ IDC_KEYBKEYBTEXT, "DLG_KEYB_KEYB" },
+		{ IDC_KEYBMETATEXT, "DLG_KEYB_META" },
+		{ IDC_KEYBDISABLE, "DLG_KEYB_DISABLE" },
+		{ IDC_KEYBAPPKEY, "DLG_KEYB_APPKEY" },
+		{ IDC_KEYBAPPCUR, "DLG_KEYB_APPCUR" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_KEYBHELP, "BTN_HELP" },
+	};
 	PTTSet ts;
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -1249,64 +1045,8 @@
 			ts = (PTTSet)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgKeybFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_KEYBTRANS, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBBS, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBDEL, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBKEYBTEXT, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBKEYB, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBMETATEXT, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBMETA, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBDISABLE, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBAPPKEY, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBAPPCUR, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_KEYBHELP, WM_SETFONT, (WPARAM)DlgKeybFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgKeybFont = NULL;
-			}
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
 
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBTRANS, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_TRANSMIT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBTRANS, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBBS, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_BS", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBBS, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBDEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_DEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBDEL, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBKEYBTEXT, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_KEYB", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBKEYBTEXT, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBMETATEXT, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_META", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBMETATEXT, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBDISABLE, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_DISABLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBDISABLE, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBAPPKEY, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_APPKEY", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBAPPKEY, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBAPPCUR, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_KEYB_APPCUR", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBAPPCUR, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_KEYBHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_KEYBHELP, uimsg);
-
 			SetRB(Dialog,ts->BSKey-1,IDC_KEYBBS,IDC_KEYBBS);
 			SetRB(Dialog,ts->DelKey,IDC_KEYBDEL,IDC_KEYBDEL);
 			SetRB(Dialog,ts->MetaKey,IDC_KEYBMETA,IDC_KEYBMETA);
@@ -1348,16 +1088,10 @@
 						}
 					}
 					EndDialog(Dialog, 1);
-					if (DlgKeybFont != NULL) {
-						DeleteObject(DlgKeybFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgKeybFont != NULL) {
-						DeleteObject(DlgKeybFont);
-					}
 					return TRUE;
 
 				case IDC_KEYBHELP:
@@ -1374,6 +1108,21 @@
 
 static BOOL CALLBACK SerialDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_SERIAL_TITLE" },
+		{ IDC_SERIALPORT_LABEL, "DLG_SERIAL_PORT" },
+		{ IDC_SERIALBAUD_LEBAL, "DLG_SERIAL_BAUD" },
+		{ IDC_SERIALDATA_LABEL, "DLG_SERIAL_DATA" },
+		{ IDC_SERIALPARITY_LABEL, "DLG_SERIAL_PARITY" },
+		{ IDC_SERIALSTOP_LABEL, "DLG_SERIAL_STOP" },
+		{ IDC_SERIALFLOW_LABEL, "DLG_SERIAL_FLOW" },
+		{ IDC_SERIALDELAY, "DLG_SERIAL_DELAY" },
+		{ IDC_SERIALDELAYCHAR_LABEL, "DLG_SERIAL_DELAYCHAR" },
+		{ IDC_SERIALDELAYLINE_LABEL, "DLG_SERIAL_DELAYLINE" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_SERIALHELP, "BTN_HELP" },
+	};
 	PTTSet ts;
 	int i, w, sel;
 	char Temp[128];
@@ -1380,9 +1129,6 @@
 	WORD ComPortTable[MAXCOMPORT];
 	static char *ComPortDesc[MAXCOMPORT];
 	int comports;
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -1389,74 +1135,8 @@
 			ts = (PTTSet)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgSerialFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_SERIALPORT_LABEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALPORT, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALBAUD_LEBAL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALBAUD, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALDATA_LABEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALDATA, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALPARITY_LABEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALPARITY, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALSTOP_LABEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALSTOP, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALFLOW_LABEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALFLOW, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALDELAY, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALDELAYCHAR_LABEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALDELAYCHAR, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALDELAYLINE_LABEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALDELAYLINE, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_SERIALHELP, WM_SETFONT, (WPARAM)DlgSerialFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgSerialFont = NULL;
-			}
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
 
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALPORT_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_PORT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALPORT_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALBAUD_LEBAL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_BAUD", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALBAUD_LEBAL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALDATA_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_DATA", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALDATA_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALPARITY_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_PARITY", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALPARITY_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALSTOP_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_STOP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALSTOP_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALFLOW_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_FLOW", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALFLOW_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALDELAY, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_DELAY", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALDELAY, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALDELAYCHAR_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_DELAYCHAR", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALDELAYCHAR_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALDELAYLINE_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_SERIAL_DELAYLINE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALDELAYLINE_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_SERIALHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_SERIALHELP, uimsg);
-
 			w = 0;
 
 			if ((comports = DetectComPorts(ComPortTable, ts->MaxComPort, ComPortDesc)) > 0) {
@@ -1497,7 +1177,7 @@
 			SetDropDownList(Dialog, IDC_SERIALBAUD, BaudList, 0);
 			i = sel = 0;
 			while (BaudList[i] != NULL) {
-				if (atoi(BaudList[i]) == ts->Baud) {
+				if ((unsigned int)atoi(BaudList[i]) == ts->Baud) {
 					SendDlgItemMessage(Dialog, IDC_SERIALBAUD, CB_SETCURSEL, i, 0);
 					sel = 1;
 					break;
@@ -1561,16 +1241,10 @@
 					}
 
 					EndDialog(Dialog, 1);
-					if (DlgSerialFont != NULL) {
-						DeleteObject(DlgSerialFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgSerialFont != NULL) {
-						DeleteObject(DlgSerialFont);
-					}
 					return TRUE;
 
 				case IDC_SERIALHELP:
@@ -1582,6 +1256,24 @@
 
 static BOOL CALLBACK TCPIPDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_TCPIP_TITLE" },
+		{ IDC_TCPIPHOSTLIST, "DLG_TCPIP_HOSTLIST" },
+		{ IDC_TCPIPADD, "DLG_TCPIP_ADD" },
+		{ IDC_TCPIPUP, "DLG_TCPIP_UP" },
+		{ IDC_TCPIPREMOVE, "DLG_TCPIP_REMOVE" },
+		{ IDC_TCPIPDOWN, "DLG_TCPIP_DOWN" },
+		{ IDC_TCPIPHISTORY, "DLG_TCPIP_HISTORY" },
+		{ IDC_TCPIPAUTOCLOSE, "DLG_TCPIP_AUTOCLOSE" },
+		{ IDC_TCPIPPORTLABEL, "DLG_TCPIP_PORT" },
+		{ IDC_TCPIPTELNET, "DLG_TCPIP_TELNET" },
+		{ IDC_TCPIPTELNETKEEPALIVELABEL, "DLG_TCPIP_KEEPALIVE" },
+		{ IDC_TCPIPTELNETKEEPALIVESEC, "DLG_TCPIP_KEEPALIVE_SEC" },
+		{ IDC_TCPIPTERMTYPELABEL, "DLG_TCPIP_TERMTYPE" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_TCPIPHELP, "BTN_HELP" },
+	};
 	PTTSet ts;
 	char EntName[10];
 	char TempHost[HostNameMaxLength+1];
@@ -1588,9 +1280,6 @@
 	UINT i, Index;
 	WORD w;
 	BOOL Ok;
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -1597,83 +1286,8 @@
 			ts = (PTTSet)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgTcpipFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_TCPIPHOSTLIST, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPHOST, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPADD, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPLIST, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPUP, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPREMOVE, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPDOWN, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPTELNETKEEPALIVELABEL, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPTELNETKEEPALIVE, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPTELNETKEEPALIVESEC, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPHISTORY, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPAUTOCLOSE, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPPORTLABEL, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPPORT, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPTELNET, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPTERMTYPELABEL, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPTERMTYPE, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TCPIPHELP, WM_SETFONT, (WPARAM)DlgTcpipFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgTcpipFont = NULL;
-			}
-
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPHOSTLIST, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_HOSTLIST", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPHOSTLIST, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPADD, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_ADD", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPADD, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPUP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_UP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPUP, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPREMOVE, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_REMOVE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPREMOVE, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPDOWN, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_DOWN", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPDOWN, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPHISTORY, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_HISTORY", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPHISTORY, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPAUTOCLOSE, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_AUTOCLOSE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPAUTOCLOSE, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPPORTLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_PORT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPPORTLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPTELNET, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_TELNET", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPTELNET, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPTELNETKEEPALIVELABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_KEEPALIVE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPTELNETKEEPALIVELABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPTELNETKEEPALIVESEC, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_KEEPALIVE_SEC", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPTELNETKEEPALIVESEC, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPTERMTYPELABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_TCPIP_TERMTYPE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPTERMTYPELABEL, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_TCPIPHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_TCPIPHELP, uimsg);
-
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
+				
 			SendDlgItemMessage(Dialog, IDC_TCPIPHOST, EM_LIMITTEXT,
 			                   HostNameMaxLength-1, 0);
 
@@ -1740,16 +1354,10 @@
 						               sizeof(ts->TermType));
 					}
 					EndDialog(Dialog, 1);
-					if (DlgTcpipFont != NULL) {
-						DeleteObject(DlgTcpipFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgTcpipFont != NULL) {
-						DeleteObject(DlgTcpipFont);
-					}
 					return TRUE;
 
 				case IDC_TCPIPHOST:
@@ -1884,6 +1492,17 @@
 
 static BOOL CALLBACK HostDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_HOST_TITLE" },
+		{ IDC_HOSTNAMELABEL, "DLG_HOST_TCPIPHOST" },
+		{ IDC_HOSTTCPPORTLABEL, "DLG_HOST_TCPIPPORT" },
+		{ IDC_HOSTTCPPROTOCOLLABEL, "DLG_HOST_TCPIPPROTOCOL" },
+		{ IDC_HOSTSERIAL, "DLG_HOST_SERIAL" },
+		{ IDC_HOSTCOMLABEL, "DLG_HOST_SERIALPORT" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_HOSTHELP, "BTN_HELP" },
+	};
 	PGetHNRec GetHNRec;
 	char EntName[128];
 	char TempHost[HostNameMaxLength+1];
@@ -1892,9 +1511,6 @@
 	WORD ComPortTable[MAXCOMPORT];
 	static char *ComPortDesc[MAXCOMPORT];
 	int comports;
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -1901,56 +1517,8 @@
 			GetHNRec = (PGetHNRec)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgHostFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_HOSTTCPIP, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTNAMELABEL, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTNAME, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTTELNET, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTTCPPORTLABEL, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTTCPPORT, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTTCPPROTOCOLLABEL, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTTCPPROTOCOL, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTSERIAL, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTCOMLABEL, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTCOM, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_HOSTHELP, WM_SETFONT, (WPARAM)DlgHostFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgHostFont = NULL;
-			}
-
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_HOST_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_HOSTNAMELABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_HOST_TCPIPHOST", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_HOSTNAMELABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_HOSTTCPPORTLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_HOST_TCPIPPORT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_HOSTTCPPORTLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_HOSTTCPPROTOCOLLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_HOST_TCPIPPROTOCOL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_HOSTTCPPROTOCOLLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_HOSTSERIAL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_HOST_SERIAL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_HOSTSERIAL, uimsg);
-			GetDlgItemText(Dialog, IDC_HOSTCOMLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_HOST_SERIALPORT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_HOSTCOMLABEL, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_HOSTHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_HOSTHELP, uimsg);
-
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
+		
 			// \x83t\x83@\x83C\x83\x8B\x82\xA8\x82\xE6\x82і\xBC\x91O\x95t\x82\xAB\x83p\x83C\x83v\x82̏ꍇ\x81ATCP/IP\x88\xB5\x82\xA2\x82Ƃ\xB7\x82\xE9\x81B
 			if ( GetHNRec->PortType==IdFile ||
 				 GetHNRec->PortType==IdNamedPipe
@@ -2092,16 +1660,10 @@
 						}
 					}
 					EndDialog(Dialog, 1);
-					if (DlgHostFont != NULL) {
-						DeleteObject(DlgHostFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgHostFont != NULL) {
-						DeleteObject(DlgHostFont);
-					}
 					return TRUE;
 
 				case IDC_HOSTTCPIP:
@@ -2158,6 +1720,14 @@
 
 static BOOL CALLBACK DirDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_DIR_TITLE" },
+		{ IDC_DIRCURRENT_LABEL, "DLG_DIR_CURRENT" },
+		{ IDC_DIRNEW_LABEL, "DLG_DIR_NEW" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_DIRHELP, "BTN_HELP" },
+	};
 	PCHAR CurDir;
 	char HomeDir[MAXPATHLEN];
 	char TmpDir[MAXPATHLEN];
@@ -2169,45 +1739,12 @@
 	int WX, WY, WW, WH, CW, DW, DH, BW, BH, SW, SH;
 	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
 	char buf[MAX_PATH], buf2[MAX_PATH];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgDirFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_DIRCURRENT_LABEL, WM_SETFONT, (WPARAM)DlgDirFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_DIRCURRENT, WM_SETFONT, (WPARAM)DlgDirFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_DIRNEW_LABEL, WM_SETFONT, (WPARAM)DlgDirFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_DIRNEW, WM_SETFONT, (WPARAM)DlgDirFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgDirFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgDirFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_DIRHELP, WM_SETFONT, (WPARAM)DlgDirFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgDirFont = NULL;
-			}
 
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_DIR_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_DIRCURRENT_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_DIR_CURRENT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_DIRCURRENT_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_DIRNEW_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_DIR_NEW", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_DIRNEW_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_DIRHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_DIRHELP, uimsg);
-
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
+				
 			CurDir = (PCHAR)(lParam);
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
@@ -2306,16 +1843,10 @@
 						_chdir(HomeDir);
 					}
 					EndDialog(Dialog, 1);
-					if (DlgDirFont != NULL) {
-						DeleteObject(DlgDirFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgDirFont != NULL) {
-						DeleteObject(DlgDirFont);
-					}
 					return TRUE;
 
 				case IDC_SELECT_DIR:
@@ -2512,7 +2043,6 @@
 {
 	HFONT hFont;
 	LOGFONT lf;
-	LONG_PTR lptr;
 
 	//SetCapture(hWnd);
 
@@ -2521,7 +2051,7 @@
 	}
 
 	// \x90e\x82̃v\x83\x8D\x83V\x81[\x83W\x83\x83\x82\xF0\x83T\x83u\x83N\x83\x89\x83X\x82\xA9\x82\xE7\x8EQ\x8FƂł\xAB\x82\xE9\x82悤\x82ɁA\x83|\x83C\x83\x93\x83^\x82\xF0\x93o\x98^\x82\xB5\x82Ă\xA8\x82\xAD\x81B
-	lptr = SetWindowLongPtr( hWnd, GWLP_USERDATA, (LONG_PTR)parent );
+	SetWindowLongPtr( hWnd, GWLP_USERDATA, (LONG_PTR)parent );
 	// \x83T\x83u\x83N\x83\x89\x83X\x82̃v\x83\x8D\x83V\x81[\x83W\x83\x83\x82\xF0\x93o\x98^\x82\xB7\x82\xE9\x81B
 	parent->proc = (WNDPROC)SetWindowLongPtr( hWnd, GWLP_WNDPROC, (LONG_PTR)UrlWndProc);
 
@@ -2538,7 +2068,78 @@
 	parent->timer_done = 0;
 }
 
+#if defined(_MSC_VER)
+static void GetCompilerInfo(char *buf, size_t buf_size)
+{
+	char tmpbuf[128];
+	int msc_ver, vs_ver, msc_low_ver;
 
+	strcpy(buf, "Microsoft Visual C++ ");
+#ifdef _MSC_FULL_VER
+	// VS2015\x82ł\xCD Compiler version = 19 \x82\xBE\x82\xAA\x81AVisual Studio version = 14 \x82ƂȂ\xC1\x82Ă\xA2\x82邽\x82߁A
+	// \x8C\xB8\x8EZ\x82𒲐\xAE\x82\xB7\x82\xE9\x81B
+	// (2015.12.23 yutaka)
+	msc_ver = (_MSC_FULL_VER / 10000000);
+	msc_low_ver = (_MSC_FULL_VER / 100000) % 100;
+	if (msc_ver < 19) {
+		vs_ver = msc_ver - 6;
+	}
+	else {
+		// 1900 = VS2015(VC++14)
+		// 1910 = VS2017(VC++15)
+		// 1911 = VS2017 update3-4(VC++15)
+		// 1912 = VS2017 update5(VC++15)
+		// 1913 = VS2017 update6(VC++15)
+		// 1914 = VS2017 15.7(VC++15)
+		// VS2017 Update3\x82\xA9\x82琻\x95i\x83o\x81[\x83W\x83\x87\x83\x93\x82\xAA3\x8C\x85\x95\\x8BL(15.x.x)\x82ɂȂ\xE8\x81A
+		// _MSC_FULL_VER\x82\xA9\x82\xE7\x8EZ\x8Fo\x82ł\xAB\x82Ȃ\xAD\x82Ȃ\xC1\x82\xBD\x82\xBD\x82߁A\x88ꗥ\x82\xC515.0\x82Ƃ\xB7\x82\xE9\x81B
+		if (msc_low_ver >= 10) {
+			vs_ver = msc_ver - 4;
+			msc_low_ver = 0;
+		} 
+		else {
+			vs_ver = msc_ver - 5;
+		}
+	}
+
+	_snprintf_s(tmpbuf, sizeof(tmpbuf), _TRUNCATE, " %d.%d",
+				vs_ver,
+				msc_low_ver);
+	strncat_s(buf, buf_size, tmpbuf, _TRUNCATE);
+	if (_MSC_FULL_VER % 100000) {
+		_snprintf_s(tmpbuf, sizeof(tmpbuf), _TRUNCATE, " build %d",
+					_MSC_FULL_VER % 100000);
+		strncat_s(buf, buf_size, tmpbuf, _TRUNCATE);
+	}
+#elif defined(_MSC_VER)
+	_snprintf_s(tmpbuf, sizeof(tmpbuf), _TRUNCATE, " %d.%d",
+				(_MSC_VER / 100) - 6,
+				_MSC_VER % 100);
+	strncat_s(buf, buf_size, tmpbuf, _TRUNCATE);
+#endif
+}
+
+#elif defined(__MINGW32__)
+static void GetCompilerInfo(char *buf, size_t buf_size)
+{
+#if defined(__clang__)
+	strncpy_s(buf, buf_size, "mingw clang " __clang_version__, _TRUNCATE);
+#elif defined(__GNUC__)
+	_snprintf_s(buf, buf_size, _TRUNCATE, "mingw gcc %s(%d.%d.%d)",
+				__VERSION__,
+				__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
+#else
+	strncat_s(buf, buf_size, "mingw", _TRUNCATE);
+#endif
+}
+
+#else
+static void GetCompilerInfo(char *buf, size_t buf_size)
+{
+	strncpy_s(buf, buf_size, "unknown compiler");
+}
+#endif
+
 static BOOL CALLBACK AboutDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
 	char buf[128], tmpbuf[128];
@@ -2549,9 +2150,6 @@
 	WORD w, h;
 	POINT point;
 	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
-	int msc_ver, vs_ver, msc_low_ver;
 
 #if defined(EFFECT_ENABLED) || defined(TEXTURE_ENABLED)
 	// for animation
@@ -2577,31 +2175,6 @@
 
 	switch (Message) {
 		case WM_INITDIALOG:
-
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgAboutFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_TT_PRO, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TT_VERSION, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_INLUCDE_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_ONIGURUMA_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TT23_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TT23DATE_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_TERANISHI_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_PROJECT_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_RIGHTS_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_AUTHOR_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_AUTHOR_URL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_FORUM_LABEL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_FORUM_URL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_BUILDTIME, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_BUILDTOOL, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgAboutFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgAboutFont = NULL;
-			}
-
 			// \x83A\x83C\x83R\x83\x93\x82𓮓I\x82ɃZ\x83b\x83g
 			{
 				int fuLoad = LR_DEFAULTCOLOR;
@@ -2650,49 +2223,8 @@
 			SendMessage(GetDlgItem(Dialog, IDC_ONIGURUMA_LABEL), WM_SETTEXT, 0, (LPARAM)buf);
 
 			// \x83r\x83\x8B\x83h\x82\xB5\x82\xBD\x82Ƃ\xAB\x82Ɏg\x82\xED\x82ꂽVisual C++\x82̃o\x81[\x83W\x83\x87\x83\x93\x82\xF0\x90ݒ肷\x82\xE9\x81B(2009.3.3 yutaka)
-			_snprintf_s(buf, sizeof(buf), _TRUNCATE, "Built using Microsoft Visual C++");
-#ifdef _MSC_FULL_VER
-			// VS2015\x82ł\xCD Compiler version = 19 \x82\xBE\x82\xAA\x81AVisual Studio version = 14 \x82ƂȂ\xC1\x82Ă\xA2\x82邽\x82߁A
-			// \x8C\xB8\x8EZ\x82𒲐\xAE\x82\xB7\x82\xE9\x81B
-			// (2015.12.23 yutaka)
-			msc_ver = (_MSC_FULL_VER / 10000000);
-			msc_low_ver = (_MSC_FULL_VER / 100000) % 100;
-			if (msc_ver < 19) {
-				vs_ver = msc_ver - 6;
-			}
-			else {
-				// 1900 = VS2015(VC++14)
-				// 1910 = VS2017(VC++15)
-				// 1911 = VS2017 update3-4(VC++15)
-				// 1912 = VS2017 update5(VC++15)
-				// 1913 = VS2017 update6(VC++15)
-				// 1914 = VS2017 15.7(VC++15)
-				// VS2017 Update3\x82\xA9\x82琻\x95i\x83o\x81[\x83W\x83\x87\x83\x93\x82\xAA3\x8C\x85\x95\\x8BL(15.x.x)\x82ɂȂ\xE8\x81A
-				// _MSC_FULL_VER\x82\xA9\x82\xE7\x8EZ\x8Fo\x82ł\xAB\x82Ȃ\xAD\x82Ȃ\xC1\x82\xBD\x82\xBD\x82߁A\x88ꗥ\x82\xC515.0\x82Ƃ\xB7\x82\xE9\x81B
-				if (msc_low_ver >= 10) {
-					vs_ver = msc_ver - 4;
-					msc_low_ver = 0;
-				} 
-				else {
-					vs_ver = msc_ver - 5;
-				}
-			}
-
-			_snprintf_s(tmpbuf, sizeof(tmpbuf), _TRUNCATE, " %d.%d",
-				vs_ver,
-				msc_low_ver);
-			strncat_s(buf, sizeof(buf), tmpbuf, _TRUNCATE);
-			if (_MSC_FULL_VER % 100000) {
-				_snprintf_s(tmpbuf, sizeof(tmpbuf), _TRUNCATE, " build %d",
-					_MSC_FULL_VER % 100000);
-				strncat_s(buf, sizeof(buf), tmpbuf, _TRUNCATE);
-			}
-#elif defined(_MSC_VER)
-			_snprintf_s(tmpbuf, sizeof(tmpbuf), _TRUNCATE, " %d.%d",
-				(_MSC_VER / 100) - 6,
-				_MSC_VER % 100);
-			strncat_s(buf, sizeof(buf), tmpbuf, _TRUNCATE);
-#endif
+			GetCompilerInfo(tmpbuf, sizeof(tmpbuf));
+			_snprintf_s(buf, sizeof(buf), _TRUNCATE, "Built using %s", tmpbuf);
 			SendMessage(GetDlgItem(Dialog, IDC_BUILDTOOL), WM_SETTEXT, 0, (LPARAM)buf);
 
 			// \x83r\x83\x8B\x83h\x83^\x83C\x83\x80\x82\xF0\x90ݒ肷\x82\xE9\x81B(2009.3.4 yutaka)
@@ -2702,7 +2234,6 @@
 			// static text \x82̃T\x83C\x83Y\x82\xF0\x95ύX (2007.4.16 maya)
 			hwnd = GetDlgItem(Dialog, IDC_AUTHOR_URL);
 			hdc = GetDC(hwnd);
-			SelectObject(hdc, DlgAboutFont);
 			GetDlgItemText(Dialog, IDC_AUTHOR_URL, uimsg, sizeof(uimsg));
 			dwExt = GetTabbedTextExtent(hdc,uimsg,strlen(uimsg),0,NULL);
 			w = LOWORD(dwExt) + 5; // \x95\x9D\x82\xAA\x8E኱\x91\xAB\x82\xE8\x82Ȃ\xA2\x82̂ŕ␳
@@ -2715,7 +2246,6 @@
 
 			hwnd = GetDlgItem(Dialog, IDC_FORUM_URL);
 			hdc = GetDC(hwnd);
-			SelectObject(hdc, DlgAboutFont);
 			GetDlgItemText(Dialog, IDC_FORUM_URL, uimsg, sizeof(uimsg));
 			dwExt = GetTabbedTextExtent(hdc,uimsg,strlen(uimsg),0,NULL);
 			w = LOWORD(dwExt) + 5; // \x95\x9D\x82\xAA\x8E኱\x91\xAB\x82\xE8\x82Ȃ\xA2\x82̂ŕ␳
@@ -2821,9 +2351,6 @@
 					return TRUE;
 			}
 #endif
-			if (DlgAboutFont != NULL) {
-				DeleteObject(DlgAboutFont);
-			}
 			break;
 
 #if defined(EFFECT_ENABLED) || defined(TEXTURE_ENABLED)
@@ -3007,13 +2534,19 @@
 
 static BOOL CALLBACK GenDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_GEN_TITLE" },
+		{ IDC_GENPORT_LABEL, "DLG_GEN_PORT" },
+		{ IDC_GENLANGLABEL, "DLG_GEN_LANG" },
+		{ IDC_GENLANGUI_LABEL, "DLG_GEN_LANG_UI" },
+		{ IDOK, "BTN_OK" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_GENHELP, "BTN_HELP" },
+	};
 	static int langui_sel = 1, uilist_count = 0;
 	PTTSet ts;
 	WORD w;
 	char Temp[8];
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -3020,45 +2553,8 @@
 			ts = (PTTSet)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgGenFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_GENPORT_LABEL, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_GENPORT, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_GENLANGLABEL, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_GENLANG, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_GENLANGUI_LABEL, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_GENLANG_UI, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_GENHELP, WM_SETFONT, (WPARAM)DlgGenFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgGenFont = NULL;
-			}
-
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_GEN_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_GENPORT_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_GEN_PORT", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_GENPORT_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_GENLANGLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_GEN_LANG", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_GENLANGLABEL, uimsg);
-			GetDlgItemText(Dialog, IDC_GENLANGUI_LABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_GEN_LANG_UI", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_GENLANGUI_LABEL, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_OK", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_GENHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_GENHELP, uimsg);
-
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
+		
 			SendDlgItemMessage(Dialog, IDC_GENPORT, CB_ADDSTRING,
 			                   0, (LPARAM)"TCP/IP");
 			for (w=1;w<=ts->MaxComPort;w++) {
@@ -3087,7 +2583,7 @@
 			// \x8Dŏ\x89\x82Ɏw\x92肳\x82\xEA\x82Ă\xA2\x82錾\x8C\xEA\x83t\x83@\x83C\x83\x8B\x82̔ԍ\x86\x82\xF0\x8Ao\x82\xA6\x82Ă\xA8\x82\xAD\x81B
 			uilist_count = make_sel_lang_ui(ts->HomeDir);
 			langui_sel = get_sel_lang_ui(LangUIList, ts->UILanguageFile_ini);
-			SetDropDownList(Dialog, IDC_GENLANG_UI, LangUIList, langui_sel);
+			SetDropDownList(Dialog, IDC_GENLANG_UI, ((const TCHAR **)LangUIList), langui_sel);
 			if (LangUIList[0] == NULL) {
 				EnableWindow(GetDlgItem(Dialog, IDC_GENLANG_UI), FALSE);
 			}
@@ -3148,16 +2644,10 @@
 					PostMessage(GetParent(Dialog),WM_USER_CHANGEMENU,0,0);
 
 					EndDialog(Dialog, 1);
-					if (DlgGenFont != NULL) {
-						DeleteObject(DlgGenFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgGenFont != NULL) {
-						DeleteObject(DlgGenFont);
-					}
 					return TRUE;
 
 				case IDC_GENHELP:
@@ -3169,12 +2659,17 @@
 
 static BOOL CALLBACK WinListDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
+	static const DlgTextInfo TextInfos[] = {
+		{ 0, "DLG_WINLIST_TITLE" },
+		{ IDC_WINLISTLABEL, "DLG_WINLIST_LABEL" },
+		{ IDOK, "DLG_WINLIST_OPEN" },
+		{ IDCANCEL, "BTN_CANCEL" },
+		{ IDC_WINLISTCLOSE, "DLG_WINLIST_CLOSEWIN" },
+		{ IDC_WINLISTHELP, "BTN_HELP" },
+	};
 	PBOOL Close;
 	int n;
 	HWND Hw;
-	char uimsg[MAX_UIMSG], uimsg2[MAX_UIMSG];
-	LOGFONT logfont;
-	HFONT font;
 
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -3181,39 +2676,8 @@
 			Close = (PBOOL)lParam;
 			SetWindowLong(Dialog, DWL_USER, lParam);
 
-			font = (HFONT)SendMessage(Dialog, WM_GETFONT, 0, 0);
-			GetObject(font, sizeof(LOGFONT), &logfont);
-			if (get_lang_font("DLG_SYSTEM_FONT", Dialog, &logfont, &DlgWinlistFont, UILanguageFile)) {
-				SendDlgItemMessage(Dialog, IDC_WINLISTLABEL, WM_SETFONT, (WPARAM)DlgWinlistFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINLISTLIST, WM_SETFONT, (WPARAM)DlgWinlistFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDOK, WM_SETFONT, (WPARAM)DlgWinlistFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDCANCEL, WM_SETFONT, (WPARAM)DlgWinlistFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINLISTCLOSE, WM_SETFONT, (WPARAM)DlgWinlistFont, MAKELPARAM(TRUE,0));
-				SendDlgItemMessage(Dialog, IDC_WINLISTHELP, WM_SETFONT, (WPARAM)DlgWinlistFont, MAKELPARAM(TRUE,0));
-			}
-			else {
-				DlgWinlistFont = NULL;
-			}
-
-			GetWindowText(Dialog, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WINLIST_TITLE", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetWindowText(Dialog, uimsg);
-			GetDlgItemText(Dialog, IDC_WINLISTLABEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WINLIST_LABEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINLISTLABEL, uimsg);
-			GetDlgItemText(Dialog, IDOK, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WINLIST_OPEN", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDOK, uimsg);
-			GetDlgItemText(Dialog, IDCANCEL, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_CANCEL", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDCANCEL, uimsg);
-			GetDlgItemText(Dialog, IDC_WINLISTCLOSE, uimsg2, sizeof(uimsg2));
-			get_lang_msg("DLG_WINLIST_CLOSEWIN", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINLISTCLOSE, uimsg);
-			GetDlgItemText(Dialog, IDC_WINLISTHELP, uimsg2, sizeof(uimsg2));
-			get_lang_msg("BTN_HELP", uimsg, sizeof(uimsg), uimsg2, UILanguageFile);
-			SetDlgItemText(Dialog, IDC_WINLISTHELP, uimsg);
-
+			SetDlgTexts(Dialog, TextInfos, _countof(TextInfos), UILanguageFile);
+		
 			SetWinList(GetParent(Dialog),Dialog,IDC_WINLISTLIST);
 			return TRUE;
 
@@ -3226,16 +2690,10 @@
 						SelectWin(n);
 					}
 					EndDialog(Dialog, 1);
-					if (DlgWinlistFont != NULL) {
-						DeleteObject(DlgWinlistFont);
-					}
 					return TRUE;
 
 				case IDCANCEL:
 					EndDialog(Dialog, 0);
-					if (DlgWinlistFont != NULL) {
-						DeleteObject(DlgWinlistFont);
-					}
 					return TRUE;
 
 				case IDC_WINLISTLIST:
@@ -3259,9 +2717,6 @@
 						SendDlgItemMessage(Dialog,IDC_WINLISTLIST,
 						                   LB_DELETESTRING,n,0);
 						PostMessage(Hw,WM_SYSCOMMAND,SC_CLOSE,0);
-						if (DlgWinlistFont != NULL) {
-							DeleteObject(DlgWinlistFont);
-						}
 					}
 					else {
 						Close = (PBOOL)GetWindowLong(Dialog,DWL_USER);
@@ -3269,9 +2724,6 @@
 							*Close = TRUE;
 						}
 						EndDialog(Dialog, 1);
-						if (DlgWinlistFont != NULL) {
-							DeleteObject(DlgWinlistFont);
-						}
 						return TRUE;
 					}
 					break;
@@ -3283,7 +2735,7 @@
 	return FALSE;
 }
 
-DllExport BOOL WINAPI SetupTerminal(HWND WndParent, PTTSet ts)
+DllExport BOOL WINAPI _SetupTerminal(HWND WndParent, PTTSet ts)
 {
 	int i;
 
@@ -3308,7 +2760,7 @@
 		                     WndParent, TermDlg, (LPARAM)ts);
 }
 
-DllExport BOOL WINAPI SetupWin(HWND WndParent, PTTSet ts)
+DllExport BOOL WINAPI _SetupWin(HWND WndParent, PTTSet ts)
 {
 	return
 		(BOOL)DialogBoxParam(hInst,
@@ -3316,7 +2768,7 @@
 		                     WndParent, WinDlg, (LPARAM)ts);
 }
 
-DllExport BOOL WINAPI SetupKeyboard(HWND WndParent, PTTSet ts)
+DllExport BOOL WINAPI _SetupKeyboard(HWND WndParent, PTTSet ts)
 {
 	return
 		(BOOL)DialogBoxParam(hInst,
@@ -3324,7 +2776,7 @@
 		                     WndParent, KeybDlg, (LPARAM)ts);
 }
 
-DllExport BOOL WINAPI SetupSerialPort(HWND WndParent, PTTSet ts)
+DllExport BOOL WINAPI _SetupSerialPort(HWND WndParent, PTTSet ts)
 {
 	return
 		(BOOL)DialogBoxParam(hInst,
@@ -3332,7 +2784,7 @@
 		                     WndParent, SerialDlg, (LPARAM)ts);
 }
 
-DllExport BOOL WINAPI SetupTCPIP(HWND WndParent, PTTSet ts)
+DllExport BOOL WINAPI _SetupTCPIP(HWND WndParent, PTTSet ts)
 {
 	return
 		(BOOL)DialogBoxParam(hInst,
@@ -3340,7 +2792,7 @@
 		                     WndParent, TCPIPDlg, (LPARAM)ts);
 }
 
-DllExport BOOL WINAPI GetHostName(HWND WndParent, PGetHNRec GetHNRec)
+DllExport BOOL WINAPI _GetHostName(HWND WndParent, PGetHNRec GetHNRec)
 {
 	return
 		(BOOL)DialogBoxParam(hInst,
@@ -3348,7 +2800,7 @@
 		                     WndParent, HostDlg, (LPARAM)GetHNRec);
 }
 
-DllExport BOOL WINAPI ChangeDirectory(HWND WndParent, PCHAR CurDir)
+DllExport BOOL WINAPI _ChangeDirectory(HWND WndParent, PCHAR CurDir)
 {
 	return
 		(BOOL)DialogBoxParam(hInst,
@@ -3356,7 +2808,7 @@
 		                     WndParent, DirDlg, (LPARAM)CurDir);
 }
 
-DllExport BOOL WINAPI AboutDialog(HWND WndParent)
+DllExport BOOL WINAPI _AboutDialog(HWND WndParent)
 {
 	return
 		(BOOL)DialogBox(hInst,
@@ -3364,7 +2816,7 @@
 		                WndParent, AboutDlg);
 }
 
-BOOL CALLBACK TFontHook(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
+static BOOL CALLBACK TFontHook(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam)
 {
 	switch (Message) {
 		case WM_INITDIALOG:
@@ -3409,7 +2861,7 @@
 #ifndef CF_INACTIVEFONTS
 #define CF_INACTIVEFONTS 0x02000000L
 #endif
-DllExport BOOL WINAPI ChooseFontDlg(HWND WndParent, LPLOGFONT LogFont, PTTSet ts)
+DllExport BOOL WINAPI _ChooseFontDlg(HWND WndParent, LPLOGFONT LogFont, PTTSet ts)
 {
 	CHOOSEFONT cf;
 	BOOL Ok;
@@ -3432,7 +2884,7 @@
 	return Ok;
 }
 
-DllExport BOOL WINAPI SetupGeneral(HWND WndParent, PTTSet ts)
+DllExport BOOL WINAPI _SetupGeneral(HWND WndParent, PTTSet ts)
 {
 	return
 		(BOOL)DialogBoxParam(hInst,
@@ -3440,7 +2892,7 @@
 		                     WndParent, (DLGPROC)&GenDlg, (LPARAM)ts);
 }
 
-DllExport BOOL WINAPI WindowWindow(HWND WndParent, PBOOL Close)
+DllExport BOOL WINAPI _WindowWindow(HWND WndParent, PBOOL Close)
 {
 	*Close = FALSE;
 	return
@@ -3450,11 +2902,13 @@
 		                     (DLGPROC)&WinListDlg, (LPARAM)Close);
 }
 
-DllExport void WINAPI TTDLGSetUILanguageFile(char *file)
+DllExport BOOL WINAPI _TTDLGSetUILanguageFile(char *file)
 {
 	strncpy_s(UILanguageFile, sizeof(UILanguageFile), file, _TRUNCATE);
+	return TRUE;
 }
 
+#if 0
 BOOL WINAPI DllMain(HANDLE hInstance,
                     ULONG ul_reason_for_call,
                     LPVOID lpReserved)
@@ -3491,3 +2945,4 @@
 	}
 	return TRUE;
 }
+#endif

Added: branches/cmake/teraterm/ttpdlg/ttdlg.h
===================================================================
--- branches/cmake/teraterm/ttpdlg/ttdlg.h	                        (rev 0)
+++ branches/cmake/teraterm/ttpdlg/ttdlg.h	2018-09-06 16:59:55 UTC (rev 7229)
@@ -0,0 +1,15 @@
+#include "teraterm.h"
+#include "tttypes.h"
+
+BOOL WINAPI _SetupTerminal(HWND WndParent, PTTSet ts);
+BOOL WINAPI _SetupWin(HWND WndParent, PTTSet ts);
+BOOL WINAPI _SetupKeyboard(HWND WndParent, PTTSet ts);
+BOOL WINAPI _SetupSerialPort(HWND WndParent, PTTSet ts);
+BOOL WINAPI _SetupTCPIP(HWND WndParent, PTTSet ts);
+BOOL WINAPI _GetHostName(HWND WndParent, PGetHNRec GetHNRec);
+BOOL WINAPI _ChangeDirectory(HWND WndParent, PCHAR CurDir);
+BOOL WINAPI _AboutDialog(HWND WndParent);
+BOOL WINAPI _ChooseFontDlg(HWND WndParent, LPLOGFONT LogFont, PTTSet ts);
+BOOL WINAPI _SetupGeneral(HWND WndParent, PTTSet ts);
+BOOL WINAPI _WindowWindow(HWND WndParent, PBOOL Close);
+BOOL WINAPI _TTDLGSetUILanguageFile(char *file);

Modified: branches/cmake/teraterm/ttpdlg/ttpdlg.rc
===================================================================
--- branches/cmake/teraterm/ttpdlg/ttpdlg.rc	2018-09-03 11:02:33 UTC (rev 7228)
+++ branches/cmake/teraterm/ttpdlg/ttpdlg.rc	2018-09-06 16:59:55 UTC (rev 7229)
@@ -450,7 +450,7 @@
 
 // Icon with lowest ID value placed first to ensure application icon
 // remains consistent on all systems.
-IDI_TTERM               ICON                    "..\\common\\teraterm.ico"
+//IDI_TTERM               ICON                    "..\\common\\teraterm.ico"
 #endif    // \x89p\x8C\xEA (\x95č\x91) resources
 /////////////////////////////////////////////////////////////////////////////
 
@@ -461,7 +461,7 @@
 //
 // Generated from the TEXTINCLUDE 3 resource.
 //
-#include "ttpdlg-version.rc"
+//#include "ttpdlg-version.rc"
 
 /////////////////////////////////////////////////////////////////////////////
 #endif    // not APSTUDIO_INVOKED



Ttssh2-commit メーリングリストの案内
Back to archive index