Revision: 7259 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7259 Author: zmatsuo Date: 2018-11-18 00:41:06 +0900 (Sun, 18 Nov 2018) Log Message: ----------- フォントの設定をガイドラインに沿って行うようにした Modified Paths: -------------- branches/cmake/teraterm/teraterm/teraterm.cpp -------------- next part -------------- Modified: branches/cmake/teraterm/teraterm/teraterm.cpp =================================================================== --- branches/cmake/teraterm/teraterm/teraterm.cpp 2018-11-03 15:33:55 UTC (rev 7258) +++ branches/cmake/teraterm/teraterm/teraterm.cpp 2018-11-17 15:41:06 UTC (rev 7259) @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 1994-1998 T. Teranishi * (C) 2006-2018 TeraTerm Project * All rights reserved. @@ -60,12 +60,12 @@ if ((module = GetModuleHandle("kernel32.dll")) != NULL) { if ((setDefDllDir = (pSetDefDllDir)GetProcAddress(module, "SetDefaultDllDirectories")) != NULL) { - // SetDefaultDllDirectories() \x82\xAA\x8Eg\x82\xA6\x82\xE9\x8Fꍇ\x82́A\x8C\x9F\x8D\xF5\x83p\x83X\x82\xF0 %WINDOWS%\system32 \x82݂̂ɐݒ肷\x82\xE9 + // SetDefaultDllDirectories() が使える場合は、検索パスを %WINDOWS%\system32 のみに設定する (*setDefDllDir)((DWORD)0x00000800); // LOAD_LIBRARY_SEARCH_SYSTEM32 } else if ((setDllDir = (pSetDllDir)GetProcAddress(module, "SetDllDirectoryA")) != NULL) { - // SetDefaultDllDirectories() \x82\xAA\x8Eg\x82\xA6\x82Ȃ\xAD\x82Ă\xE0\x81ASetDllDirectory() \x82\xAA\x8Eg\x82\xA6\x82\xE9\x8Fꍇ\x82\xCD - // \x83J\x83\x8C\x83\x93\x83g\x83f\x83B\x83\x8C\x83N\x83g\x83\x8A\x82\xBE\x82\xAF\x82ł\xE0\x8C\x9F\x8D\xF5\x83p\x83X\x82\xA9\x82\xE7\x82͂\xB8\x82\xB5\x82Ă\xA8\x82\xAD\x81B + // SetDefaultDllDirectories() が使えなくても、SetDllDirectory() が使える場合は + // カレントディレクトリだけでも検索パスからはずしておく。 (*setDllDir)(""); } } @@ -115,9 +115,9 @@ switch (ActiveWin) { case IdVT: Change = ((CVTWindow*)pVTWin)->Parse(); - // TEK window\x82̃A\x83N\x83e\x83B\x83u\x92\x86\x82\xC9 pause \x82\xF0\x8Eg\x82\xA4\x82ƁACPU\x8Eg\x97p\x97\xA6100%\x82ƂȂ\xE9 - // \x8C\xBB\x8Fۂւ̎b\x92\xE8\x91Ώ\x88\x81B(2006.2.6 yutaka) - // \x91҂\xBF\x8E\x9E\x8AԂ\xF0\x82Ȃ\xAD\x82\xB5\x81A\x83R\x83\x93\x83e\x83L\x83X\x83g\x83X\x83C\x83b\x83`\x82\xBE\x82\xAF\x82ɂ\xB7\x82\xE9\x81B(2006.3.20 yutaka) + // TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる + // 現象への暫定対処。(2006.2.6 yutaka) + // 待ち時間をなくし、コンテキストスイッチだけにする。(2006.3.20 yutaka) Sleep(0); break; @@ -124,8 +124,8 @@ case IdTEK: if (pTEKWin != NULL) { Change = ((CTEKWindow*)pTEKWin)->Parse(); - // TEK window\x82̃A\x83N\x83e\x83B\x83u\x92\x86\x82\xC9 pause \x82\xF0\x8Eg\x82\xA4\x82ƁACPU\x8Eg\x97p\x97\xA6100%\x82ƂȂ\xE9 - // \x8C\xBB\x8Fۂւ̎b\x92\xE8\x91Ώ\x88\x81B(2006.2.6 yutaka) + // TEK windowのアクティブ中に pause を使うと、CPU使用率100%となる + // 現象への暫定対処。(2006.2.6 yutaka) Sleep(1); } else { @@ -181,10 +181,10 @@ /* Receiver */ if (DDELog && cv.DCount >0) { - // \x83\x8D\x83O\x83o\x83b\x83t\x83@\x82\xAA\x82܂\xBEDDE\x83N\x83\x89\x83C\x83A\x83\x93\x83g\x82֑\x97\x82\xE7\x82\xEA\x82Ă\xA2\x82Ȃ\xA2\x8Fꍇ\x82́A - // TCP\x83p\x83P\x83b\x83g\x82̎\xF3\x90M\x82\xF0\x8Ds\x82\xED\x82Ȃ\xA2\x81B - // \x98A\x91\xB1\x82\xB5\x82Ď\xF3\x90M\x82\xF0\x8Ds\x82\xA4\x82ƁA\x83\x8D\x83O\x83o\x83b\x83t\x83@\x82\xAA\x83\x89\x83E\x83\x93\x83h\x83\x8D\x83r\x83\x93\x82ɂ\xE6\x82薢\x91\x97\x90M\x82̃f\x81[\x83^\x82\xF0 - // \x8F㏑\x82\xAB\x82\xB5\x82Ă\xB5\x82܂\xA4\x89\\x90\xAB\x82\xAA\x82\xA0\x82\xE9\x81B(2007.6.14 yutaka) + // ログバッファがまだDDEクライアントへ送られていない場合は、 + // TCPパケットの受信を行わない。 + // 連続して受信を行うと、ログバッファがラウンドロビンにより未送信のデータを + // 上書きしてしまう可能性がある。(2007.6.14 yutaka) } else { CommReceive(&cv); @@ -223,32 +223,40 @@ { LOGFONT logfont; BOOL result; + + // 明示的に指定されている場合はそれに従う result = GetI18nLogfont("Tera Term", "DLG_FONT", &logfont, 72, ts.UILanguageFile); + + // 明示されていない場合 if (result == FALSE) { - NONCLIENTMETRICSA ncm = {sizeof ncm}; - result = SystemParametersInfoA(SPI_GETNONCLIENTMETRICS, sizeof(ncm), &ncm, 0); - if (result == TRUE) { - logfont = ncm.lfMessageFont; + // ガイドラインに沿った設定を行う + // https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa511282.aspx + if (IsWindowsVistaOrLater()) { + // Windows Vista以降 Segoe UI + strcpy(logfont.lfFaceName, "Segoe UI"); + logfont.lfCharSet = 0; + logfont.lfHeight = -9; + logfont.lfWidth = 0; + } else if (IsWindows2000OrLater()) { + // Windows®XP および Windows 2000 をターゲットとする場合は、 + // 8 ポイント MS Shell Dlg 2 擬似フォントを使用します。 + // このフォントは Tahoma にマッピングされます。 + strcpy(logfont.lfFaceName, "MS Shell Dlg 2"); + logfont.lfCharSet = 0; + logfont.lfHeight = -8; + logfont.lfWidth = 0; + } else { + // 以前のバージョンをターゲットとする場合は + // 8 ポイント MS Shell Dlg 擬似フォントを使用します + // MS Sans Serif にそれぞれマッピングされます + strcpy(logfont.lfFaceName, "MS Shell Dlg"); + logfont.lfCharSet = 0; + logfont.lfHeight = -8; + logfont.lfWidth = 0; } + result = TRUE; } - if (result == FALSE) { - result = GetI18nLogfont("Tera Term", "DLG_TAHOMA_FONT", &logfont, 72, ts.UILanguageFile); - if (result == FALSE) { - result = GetI18nLogfont("Tera Term", "DLG_SYSTEM_FONT", &logfont, 72, ts.UILanguageFile); - } - } -#if 0 - TTSetDlgFont(L"MS Shell Dlg2", 8, 128); - TTSetDlgFont(L"MS Shell Dlg", 8, 128); - TTSetDlgFont(L"Yu Gothic UI",12,128); // windows 10 - TTSetDlgFont(L"Meiryo UI",12,128); // Windows 7,8 - TTSetDlgFont(L"\x83\x81\x83C\x83\x8A\x83I",10,128); - TTSetDlgFont(L"MS UI Gothic",10,128); - TTSetDlgFont(L"\x82l\x82r \x82o\x83S\x83V\x83b\x83N",12,128); - TTSetDlgFont(L"Segoe UI",10,128); -#endif - if (result) { TTSetDlgFont(logfont.lfFaceName, logfont.lfHeight, logfont.lfCharSet); } else { @@ -279,9 +287,9 @@ if (m_pMainWnd->m_hAccel != NULL) { if (!MetaKey(ts.MetaKey)) { - // matakey\x82\xAA\x89\x9F\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2 + // matakeyが押されていない if (TranslateAccelerator(m_pMainWnd->m_hWnd , m_pMainWnd->m_hAccel, &msg)) { - // \x83A\x83N\x83Z\x83\x89\x83\x8C\x81[\x83^\x81[\x83L\x81[\x82\xF0\x8F\x88\x97\x9D\x82\xB5\x82\xBD + // アクセラレーターキーを処理した message_processed = true; } } @@ -293,16 +301,16 @@ } while (!PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE)) { - // \x83\x81\x83b\x83Z\x81[\x83W\x82\xAA\x82Ȃ\xA2 + // メッセージがない if (!OnIdle(lCount)) { - // idle\x95s\x97v - if (SleepTick < 500) { // \x8Dő\xE5 501ms\x96\xA2\x96\x9E + // idle不要 + if (SleepTick < 500) { // 最大 501ms未満 SleepTick += 2; } lCount = 0; Sleep(SleepTick); } else { - // \x97vidle + // 要idle SleepTick = 0; lCount++; }