@@ -31,9 +31,10 @@ BOOL XG_SettingsDialog::OnInitDialog(HWND hwnd)
3131
3232 // フォント名を格納する。
3333 ::SetDlgItemTextW (hwnd, edt1, xg_lfCellLogFont.lfFaceName);
34- ::SetDlgItemTextW (hwnd, edt2, xg_szSmallFont );
34+ ::SetDlgItemTextW (hwnd, edt2, xg_lfSmallLogFont.lfFaceName );
3535 ::SetDlgItemTextW (hwnd, edt3, xg_szUIFont);
3636 m_lfCellFont = xg_lfCellLogFont;
37+ m_lfSmallFont = xg_lfSmallLogFont;
3738
3839 // スケルトンビューか?
3940 ::CheckDlgButton (hwnd, chx1,
@@ -207,12 +208,11 @@ BOOL XG_SettingsDialog::OnOK(HWND hwnd)
207208
208209 // セルフォント。
209210 xg_lfCellLogFont = m_lfCellFont;
211+ StringCchCopyW (xg_szCellFont, _countof (xg_szCellFont), xg_lfCellLogFont.lfFaceName );
210212
211- // 小さい文字のフォント。
212- ::GetDlgItemTextW (hwnd, edt2, szName, _countof(szName));
213- StringCchCopy (xg_szSmallFont, _countof (xg_szSmallFont), szName);
214- // xg_lfSmallLogFont のフォント名も同期する(サイズは変更しない)。
215- StringCchCopy (xg_lfSmallLogFont.lfFaceName , _countof (xg_lfSmallLogFont.lfFaceName ), szName);
213+ // 小さいフォント。
214+ xg_lfSmallLogFont = m_lfSmallFont;
215+ StringCchCopyW (xg_szSmallFont, _countof (xg_szSmallFont), xg_lfSmallLogFont.lfFaceName );
216216
217217 // UIフォント。
218218 ::GetDlgItemTextW (hwnd, edt3, szName, _countof(szName));
@@ -316,7 +316,7 @@ BOOL XG_SettingsDialog::DoImportLooks(HWND hwnd, LPCWSTR pszFileName)
316316 m_hwndMarked.SetColor (_wtoi (szText));
317317 InvalidateRect (m_hwndMarked, nullptr , TRUE );
318318
319- // フォント 。
319+ // マスのフォント 。
320320 GetPrivateProfileStringW (L" Looks" , L" CellFont" , L" " , szText, _countof (szText), pszFileName);
321321 SetDlgItemTextW (hwnd, edt1, szText);
322322 m_lfCellFont = {};
@@ -336,17 +336,22 @@ BOOL XG_SettingsDialog::DoImportLooks(HWND hwnd, LPCWSTR pszFileName)
336336 }
337337 }
338338
339+ // 小さいフォント。
339340 GetPrivateProfileStringW (L" Looks" , L" SmallFont" , L" " , szText, _countof (szText), pszFileName);
340341 SetDlgItemTextW (hwnd, edt2, szText);
341- // SmallLogFontがあれば優先してフォント名を取得してダイアログへ反映する。
342+ m_lfSmallFont = {};
343+ lstrcpynW (m_lfSmallFont.lfFaceName , szText, _countof (m_lfSmallFont.lfFaceName ));
342344 GetPrivateProfileStringW (L" Looks" , L" SmallLogFont" , L" " , szText, _countof (szText), pszFileName);
343345 if (szText[0 ]) {
344346 std::vector<BYTE > data;
345347 XgHexToBin (data, szText);
346348 if (data.size () == sizeof (LOGFONTW )) {
347- LOGFONTW lfSmall;
348- memcpy (&lfSmall, data.data (), sizeof (LOGFONTW ));
349- SetDlgItemTextW (hwnd, edt2, lfSmall.lfFaceName );
349+ const LONG lfHeight = m_lfSmallFont.lfHeight ;
350+ const LONG lfWidth = m_lfSmallFont.lfWidth ;
351+ memcpy (&m_lfSmallFont, data.data (), sizeof (LOGFONTW ));
352+ m_lfSmallFont.lfHeight = lfHeight;
353+ m_lfSmallFont.lfWidth = lfWidth;
354+ SetDlgItemTextW (hwnd, edt1, m_lfSmallFont.lfFaceName );
350355 }
351356 }
352357
@@ -489,21 +494,16 @@ BOOL XG_SettingsDialog::DoExportLooks(HWND hwnd, LPCWSTR pszFileName)
489494 // セルフォント。
490495 ::GetDlgItemTextW (hwnd, edt1, szName, _countof(szName));
491496 WritePrivateProfileStringW (L" Looks" , L" CellFont" , szName, pszFileName);
492- // CellLogFontを保存する。
493497 {
494498 XGStringW strHex = XgBinToHex (&m_lfCellFont, sizeof (m_lfCellFont));
495499 WritePrivateProfileStringW (L" Looks" , L" CellLogFont" , strHex.c_str (), pszFileName);
496500 }
497501
498- // 小さい文字のフォント 。
502+ // 小さいフォント 。
499503 ::GetDlgItemTextW (hwnd, edt2, szName, _countof(szName));
500504 WritePrivateProfileStringW (L" Looks" , L" SmallFont" , szName, pszFileName);
501- // SmallLogFontを保存する(互換のためSmallFontとSmallLogFontの両方を書き出す)。
502505 {
503- // ダイアログのフォント名とxg_lfSmallLogFontのプロパティを合わせて保存する。
504- LOGFONTW lfSmall = xg_lfSmallLogFont;
505- StringCchCopy (lfSmall.lfFaceName , _countof (lfSmall.lfFaceName ), szName);
506- XGStringW strHex = XgBinToHex (&lfSmall, sizeof (lfSmall));
506+ XGStringW strHex = XgBinToHex (&m_lfSmallFont, sizeof (m_lfSmallFont));
507507 WritePrivateProfileStringW (L" Looks" , L" SmallLogFont" , strHex.c_str (), pszFileName);
508508 }
509509
@@ -633,6 +633,7 @@ void XG_SettingsDialog::OnResetLooks(HWND hwnd)
633633
634634 // フォント。
635635 m_lfCellFont = {};
636+ m_lfSmallFont = {};
636637 SetDlgItemTextW (hwnd, edt1, L" " );
637638 SetDlgItemTextW (hwnd, edt2, L" " );
638639 SetDlgItemTextW (hwnd, edt3, L" " );
@@ -744,10 +745,16 @@ void XG_SettingsDialog::OnChange(HWND hwnd, int i)
744745 cf.Flags = CF_NOSCRIPTSEL | CF_NOVERTFONTS | CF_SCALABLEONLY |
745746 CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS ;
746747 lf = xg_lfSmallLogFont;
747- lf.lfHeight = 24 ;
748+ lf.lfHeight = 12 ;
748749 if (::ChooseFontW (&cf)) {
749750 // 取得したフォントをダイアログへ格納する。
750751 ::SetDlgItemTextW (hwnd, edt2, lf.lfFaceName);
752+ // m_lfSmallFontに反映する(サイズは変更しない)。
753+ const LONG lfHeight = m_lfSmallFont.lfHeight ;
754+ const LONG lfWidth = m_lfSmallFont.lfWidth ;
755+ m_lfSmallFont = lf;
756+ m_lfSmallFont.lfHeight = lfHeight;
757+ m_lfSmallFont.lfWidth = lfWidth;
751758 }
752759 break ;
753760
@@ -940,7 +947,7 @@ XG_SettingsDialog::DialogProcDx(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPar
940947 break ;
941948
942949 case psh4: // 小さいフォントリセット
943- ::SetDlgItemTextW (hwnd, edt2, L" " ) ;
950+ m_lfSmallFont = {} ;
944951 break ;
945952
946953 case psh5: // UIフォント変更
0 commit comments