@joebigelow / wix / commits / 5816f9e2

WIXFEAT:5843 Use MSFTEDIT_CLASS for Rich Edit controls when available.

Sean Hall committed Jul 30, 2020 at 12:23 UTC 5816f9e2585822f7b6140fddc405d30f2a4b381d
1 file changed +16 -4
src/dutil/thmutil.cpp
+16 -4
@@ -47,6 +47,7 @@ static ULONG_PTR vgdiToken = 0;
47 static ULONG_PTR vgdiHookToken = 0;
48 static HMODULE vhHyperlinkRegisteredModule = NULL;
49 static HMODULE vhPanelRegisteredModule = NULL;
50 +static HMODULE vhModuleMsftEdit = NULL;
51 static HMODULE vhModuleRichEd = NULL;
52 static HCURSOR vhCursorHand = NULL;
53
@@ -454,6 +455,12 @@ LExit:
455
456 DAPI_(void) ThemeUninitialize()
457 {
458 + if (vhModuleMsftEdit)
459 + {
460 + ::FreeLibrary(vhModuleMsftEdit);
461 + vhModuleMsftEdit = NULL;
462 + }
463 +
464 if (vhModuleRichEd)
465 {
466 ::FreeLibrary(vhModuleRichEd);
@@ -5049,12 +5056,17 @@ static HRESULT LoadControls(
5056 break;
5057
5058 case THEME_CONTROL_TYPE_RICHEDIT:
5052 - if (!vhModuleRichEd)
5059 + if (!vhModuleMsftEdit && !vhModuleRichEd)
5060 {
5054 - hr = LoadSystemLibrary(L"Riched20.dll", &vhModuleRichEd);
5055 - ThmExitOnFailure(hr, "Failed to load Rich Edit control library.");
5061 + hr = LoadSystemLibrary(L"Msftedit.dll", &vhModuleMsftEdit);
5062 + if (FAILED(hr))
5063 + {
5064 + hr = LoadSystemLibrary(L"Riched20.dll", &vhModuleRichEd);
5065 + ThmExitOnFailure(hr, "Failed to load Rich Edit control library.");
5066 + }
5067 }
5057 - wzWindowClass = RICHEDIT_CLASSW;
5068 +
5069 + wzWindowClass = vhModuleMsftEdit ? MSFTEDIT_CLASS : RICHEDIT_CLASSW;
5070 dwWindowBits |= ES_AUTOVSCROLL | ES_MULTILINE | WS_VSCROLL | ES_READONLY;
5071 break;
5072