• R/O
  • SSH
  • HTTPS

ttssh2: Commit


Commit MetaInfo

Revision7587 (tree)
Time2019-04-13 01:19:17
Authorzmatsuo

Log Message

フォントの単位変換関数を追加
GetFontPointFromPixel(), GetFontPixelFromPoint()

Change Summary

Incremental Difference

--- trunk/teraterm/common/dlglib.h (revision 7586)
+++ trunk/teraterm/common/dlglib.h (revision 7587)
@@ -91,6 +91,8 @@
9191 HFONT SetDlgFonts(HWND hDlg, const int nIDDlgItems[], int nIDDlgItemCount,
9292 const char *UILanguageFile, PCHAR key);
9393 BOOL IsExistFontA(const char *face, BYTE charset, BOOL strict);
94+int GetFontPointFromPixel(HWND hWnd, int pixel);
95+int GetFontPixelFromPoint(HWND hWnd, int point);
9496
9597 #if defined(_UNICODE)
9698 #define TTSetDlgFont(p1,p2,p3) TTSetDlgFontW(p1,p2,p3)
--- trunk/teraterm/common/dlglib_cpp.cpp (revision 7586)
+++ trunk/teraterm/common/dlglib_cpp.cpp (revision 7587)
@@ -319,6 +319,40 @@
319319 {
320320 LOGFONT logfont;
321321 GetMessageboxFont(&logfont);
322+ if (logfont.lfHeight < 0) {
323+ logfont.lfHeight = GetFontPointFromPixel(NULL, -logfont.lfHeight);
324+ }
322325 TTSetDlgFont(logfont.lfFaceName, logfont.lfHeight, logfont.lfCharSet);
323326 }
324327 }
328+
329+
330+/**
331+ * pixel数をpoint数に変換する(フォント用)
332+ * 注 1point = 1/72 inch, フォントの単位
333+ * 注 ウィンドウの表示具合で倍率が変化するので hWnd が必要
334+ */
335+int GetFontPixelFromPoint(HWND hWnd, int pixel)
336+{
337+ if (hWnd == NULL) {
338+ hWnd = GetDesktopWindow();
339+ }
340+ HDC DC = GetDC(hWnd);
341+ int dpi = GetDeviceCaps(DC, LOGPIXELSY); // dpi = dot per inch (96DPI)
342+ int point = MulDiv(pixel, dpi, 72); // pixel = point / 72 * dpi
343+ ReleaseDC(hWnd, DC);
344+ return point;
345+}
346+
347+/**
348+ * point数をpixel数に変換する(フォント用)
349+ * 注 1point = 1/72 inch, フォントの単位
350+ */
351+int GetFontPointFromPixel(HWND hWnd, int point)
352+{
353+ HDC DC = GetDC(hWnd);
354+ int dpi = GetDeviceCaps(DC, LOGPIXELSY); // dpi = dot per inch (96DPI)
355+ int pixel = MulDiv(point, 72, dpi); // point = pixel / dpi * 72
356+ ReleaseDC(hWnd, DC);
357+ return pixel;
358+}
--- trunk/teraterm/common/dlglib_tmpl.cpp (revision 7586)
+++ trunk/teraterm/common/dlglib_tmpl.cpp (revision 7587)
@@ -440,6 +440,10 @@
440440 static LONG FontHeight;
441441 static BYTE FontCharSet;
442442
443+/**
444+ * ダイアログのフォントを設定する
445+ * heightの単位はポイント
446+ */
443447 void TTSetDlgFontW(const wchar_t *face, int height, int charset)
444448 {
445449 if (face != NULL) {
@@ -451,6 +455,10 @@
451455 FontCharSet = (BYTE)charset;
452456 }
453457
458+/**
459+ * ダイアログのフォントを設定する
460+ * heightの単位はポイント
461+ */
454462 void TTSetDlgFontA(const char *face, int height, int charset)
455463 {
456464 if (face != NULL) {
Show on old repository browser