--- 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 +#include // ---------------------------------------------------------------------------- // private classes @@ -261,6 +263,48 @@ return font; } +#ifndef TMT_MSGBOXFONT +#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() + { + //Windows 2000 doesn't ship with this dll so we need to link it dynamically + if (HMODULE lib = ::LoadLibrary(L"UxTheme.dll")) + { + OpenThemeDataFun OpenThemeData = reinterpret_cast(::GetProcAddress(lib, "OpenThemeData")); + CloseThemeDataFun CloseThemeData = reinterpret_cast(::GetProcAddress(lib, "CloseThemeData")); + GetThemeSysFontFun GetThemeSysFont = reinterpret_cast(::GetProcAddress(lib, "GetThemeSysFont")); + + 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; + + wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) { #ifdef __WXWINCE__