diff options
Diffstat (limited to 'wxWidgets-Fix/settings.cpp.patch')
-rw-r--r-- | wxWidgets-Fix/settings.cpp.patch | 54 |
1 files changed, 32 insertions, 22 deletions
diff --git a/wxWidgets-Fix/settings.cpp.patch b/wxWidgets-Fix/settings.cpp.patch index 1ba9524a..3c48d052 100644 --- a/wxWidgets-Fix/settings.cpp.patch +++ b/wxWidgets-Fix/settings.cpp.patch @@ -1,19 +1,15 @@ ---- src\msw\settings.cpp.old 2011-03-22 10:36:54.000000000 +0100 -+++ src\msw\settings.cpp 2011-12-14 21:58:59.642200200 +0100 -@@ -40,6 +40,12 @@ +--- settings.cpp.old 2011-03-22 10:36:54.000000000 +0100 ++++ settings.cpp 2012-01-23 00:26:06.916105800 +0100 +@@ -40,6 +40,8 @@ #endif #include "wx/fontutil.h" +//#include <vssym32.h> +#include <Uxtheme.h> -+ -+#ifdef _MSC_VER -+#pragma comment(lib, "UxTheme.lib") -+#endif // ---------------------------------------------------------------------------- // private classes -@@ -261,6 +267,34 @@ +@@ -261,6 +263,48 @@ return font; } @@ -21,26 +17,40 @@ +#define TMT_MSGBOXFONT 805 //why is this constant missing from Uxtheme.h??? +#endif + ++typedef HTHEME (WINAPI* OpenThemeDataFun )(HWND hwnd, LPCWSTR pszClassList); ++typedef HRESULT (WINAPI* CloseThemeDataFun )(HTHEME hTheme); ++typedef HRESULT (WINAPI* GetThemeSysFontFun)(HTHEME hTheme, int iFontID, LOGFONTW* plf); ++ +struct InitFont //(try to) initialize default font, before wxWidgets gets chance to screw up +{ + InitFont() + { -+ HTHEME theme = ::OpenThemeData(NULL, //__in HWND hwnd, -+ L"WINDOW"); //__in LPCWSTR pszClassList -+ -+ LOGFONT lfont = {}; -+ if (::GetThemeSysFont(theme, //__in HTHEME hTheme, -+ TMT_MSGBOXFONT, //__in int iFontID, -+ &lfont) == S_OK) // __out LOGFONTW *plf ++ //Windows 2000 doesn't ship with this dll so we need to link it dynamically ++ if (HMODULE lib = ::LoadLibrary(L"UxTheme.dll")) + { -+ wxNativeFontInfo native; -+ native.lf = lfont; -+ delete gs_fontDefault; -+ gs_fontDefault = wxFontBase::New(native); -+ } ++ OpenThemeDataFun OpenThemeData = reinterpret_cast<OpenThemeDataFun >(::GetProcAddress(lib, "OpenThemeData")); ++ CloseThemeDataFun CloseThemeData = reinterpret_cast<CloseThemeDataFun >(::GetProcAddress(lib, "CloseThemeData")); ++ GetThemeSysFontFun GetThemeSysFont = reinterpret_cast<GetThemeSysFontFun>(::GetProcAddress(lib, "GetThemeSysFont")); + -+ if (theme != NULL) -+ ::CloseThemeData(theme); ++ HTHEME theme = (*OpenThemeData)(NULL, //__in HWND hwnd, ++ L"WINDOW"); //__in LPCWSTR pszClassList ++ ++ LOGFONT lfont = {}; ++ if ((*GetThemeSysFont)(theme, //__in HTHEME hTheme, ++ TMT_MSGBOXFONT, //__in int iFontID, ++ &lfont) == S_OK) // __out LOGFONTW *plf ++ { ++ wxNativeFontInfo native; ++ native.lf = lfont; ++ delete gs_fontDefault; ++ gs_fontDefault = wxFontBase::New(native); ++ } ++ ++ if (theme != NULL) ++ (*CloseThemeData)(theme); ++ ++ ::FreeLibrary(lib); ++ } + } +} dummy; + |