diff --git a/windows/init.cpp b/windows/init.cpp index 24831143..89d3837a 100644 --- a/windows/init.cpp +++ b/windows/init.cpp @@ -6,6 +6,7 @@ HINSTANCE hInstance; int nCmdShow; HFONT hMessageFont; +uiWindowsSizing messageFontSizing; // LONGTERM needed? HBRUSH hollowBrush; @@ -95,6 +96,11 @@ const char *uiInit(uiInitOptions *o) if (hMessageFont == NULL) return ieLastErr("loading default messagebox font; this is the default UI font"); + // Initialize to zero to means that the values are unknown. + messageFontSizing.BaseX = 0; + messageFontSizing.BaseY = 0; + messageFontSizing.InternalLeading = 0; + if (initContainer(hDefaultIcon, hDefaultCursor) == 0) return ieLastErr("initializing uiWindowsMakeContainer() window class"); diff --git a/windows/sizing.cpp b/windows/sizing.cpp index 33cc00b9..df5661d7 100644 --- a/windows/sizing.cpp +++ b/windows/sizing.cpp @@ -34,7 +34,10 @@ void getSizing(HWND hwnd, uiWindowsSizing *sizing, HFONT font) void uiWindowsGetSizing(HWND hwnd, uiWindowsSizing *sizing) { - return getSizing(hwnd, sizing, hMessageFont); + if (messageFontSizing.BaseX == 0) { + getSizing(hwnd, &messageFontSizing, hMessageFont); + } + *sizing = messageFontSizing; } #define dlgUnitsToX(dlg, baseX) MulDiv((dlg), (baseX), 4) diff --git a/windows/uipriv_windows.hpp b/windows/uipriv_windows.hpp index 77982322..22cdfd56 100644 --- a/windows/uipriv_windows.hpp +++ b/windows/uipriv_windows.hpp @@ -86,6 +86,8 @@ extern void setWindowText(HWND hwnd, WCHAR *wtext); extern HINSTANCE hInstance; extern int nCmdShow; extern HFONT hMessageFont; +// keep memory of text metric values given in getSizing in sizing.cpp +extern uiWindowsSizing messageFontSizing; extern HBRUSH hollowBrush; extern uiInitOptions options;