Skip to content

Commit ad1abb5

Browse files
committed
プルリクエストに伴う修正
1 parent 9ad041c commit ad1abb5

4 files changed

Lines changed: 36 additions & 21 deletions

File tree

GUI.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,6 +1109,7 @@ bool __fastcall XgLoadSettings(void)
11091109
xg_bNoWriteLooks = static_cast<BOOL>(dwValue);
11101110
}
11111111

1112+
// マスのフォント
11121113
if (!app_key.QuerySz(L"CellFont", sz, _countof(sz))) {
11131114
StringCchCopy(xg_szCellFont, _countof(xg_szCellFont), sz);
11141115
xg_lfCellLogFont = {};
@@ -1127,8 +1128,11 @@ bool __fastcall XgLoadSettings(void)
11271128
}
11281129
}
11291130

1131+
// 小さいフォント
11301132
if (!app_key.QuerySz(L"SmallFont", sz, _countof(sz))) {
11311133
StringCchCopy(xg_szSmallFont, _countof(xg_szSmallFont), sz);
1134+
xg_lfSmallLogFont = {};
1135+
StringCchCopy(xg_lfSmallLogFont.lfFaceName, _countof(xg_lfSmallLogFont.lfFaceName), sz);
11321136
}
11331137
{
11341138
// xg_lfSmallLogFont をレジストリから読み込む(サイズフィールドは除く)。
@@ -1145,6 +1149,7 @@ bool __fastcall XgLoadSettings(void)
11451149
StringCchCopy(xg_lfSmallLogFont.lfFaceName, _countof(xg_lfSmallLogFont.lfFaceName), xg_szSmallFont);
11461150
}
11471151
}
1152+
11481153
if (!app_key.QuerySz(L"UIFont", sz, _countof(sz))) {
11491154
StringCchCopy(xg_szUIFont, _countof(xg_szUIFont), sz);
11501155
}

HISTORY.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -998,5 +998,5 @@
998998
- 完了時とキャンセル時の競合状態を修正。
999999
- 生成AIを用いて高速化。
10001000
- 2026年XX月YY日 ver.5.3.0
1001-
- マスのフォントをLOGFONT形式に拡張
1001+
- マスのフォントと小さい文字のフォントをLOGFONT形式に拡張
10021002
- プロパティシートでの異常終了を修正。

XG_SettingsDialog.cpp

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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フォント変更

XG_SettingsDialog.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ class XG_SettingsDialog
1010
public:
1111
// マスフォントの一時キャッシュ。
1212
LOGFONT m_lfCellFont = {};
13+
// 小さいフォントの一時キャッシュ。
14+
LOGFONT m_lfSmallFont = {};
1315

1416
XG_SettingsDialog() noexcept
1517
{
1618
m_lfCellFont = xg_lfCellLogFont;
19+
m_lfSmallFont = xg_lfSmallLogFont;
1720
}
1821

1922
// [設定]ダイアログの初期化。

0 commit comments

Comments
 (0)