diff options
Diffstat (limited to 'wx+/font_size.h')
-rw-r--r-- | wx+/font_size.h | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/wx+/font_size.h b/wx+/font_size.h index 2858afb6..03f3c62b 100644 --- a/wx+/font_size.h +++ b/wx+/font_size.h @@ -9,11 +9,12 @@ #include <zen/basic_math.h> #include <wx/window.h> -#ifdef ZEN_WIN - #include <zen/dll.h> +#include <zen/scope_guard.h> +#ifdef ZEN_WIN_VISTA_AND_LATER + #include <zen/win.h> #include <Uxtheme.h> #include <vsstyle.h> //TEXT_MAININSTRUCTION - #include <vssym32.h> //TMT_COLOR + #include <vssym32.h> //TMT_TEXTCOLOR #endif @@ -49,28 +50,22 @@ void setMainInstructionFont(wxWindow& control) #ifdef ZEN_WIN //http://msdn.microsoft.com/de-DE/library/windows/desktop/aa974176#fonts font.SetPointSize(wxNORMAL_FONT->GetPointSize() * 4 / 3); //integer round down +#ifdef ZEN_WIN_VISTA_AND_LATER //get main instruction color: don't hard-code, respect accessibility! - typedef HTHEME (WINAPI* OpenThemeDataFun )(HWND hwnd, LPCWSTR pszClassList); - typedef HRESULT (WINAPI* CloseThemeDataFun)(HTHEME hTheme); - typedef HRESULT (WINAPI* GetThemeColorFun )(HTHEME hTheme, int iPartId, int iStateId, int iPropId, COLORREF *pColor); - - const SysDllFun<OpenThemeDataFun> openThemeData (L"UxTheme.dll", "OpenThemeData"); //available with Windows XP and later - const SysDllFun<CloseThemeDataFun> closeThemeData(L"UxTheme.dll", "CloseThemeData"); - const SysDllFun<GetThemeColorFun> getThemeColor (L"UxTheme.dll", "GetThemeColor"); - if (openThemeData && closeThemeData && getThemeColor) - if (HTHEME hTheme = openThemeData(NULL, //__in HWND hwnd, - L"TEXTSTYLE")) //__in LPCWSTR pszClassList - { - ZEN_ON_SCOPE_EXIT(closeThemeData(hTheme)); - - COLORREF cr = {}; - if (getThemeColor(hTheme, //_In_ HTHEME hTheme, - TEXT_MAININSTRUCTION, // _In_ int iPartId, - 0, // _In_ int iStateId, - TMT_TEXTCOLOR, // _In_ int iPropId, - &cr) == S_OK) // _Out_ COLORREF *pColor - control.SetForegroundColour(wxColor(cr)); - } + if (HTHEME hTheme = ::OpenThemeData(NULL, //__in HWND hwnd, + L"TEXTSTYLE")) //__in LPCWSTR pszClassList + { + ZEN_ON_SCOPE_EXIT(::CloseThemeData(hTheme)); + + COLORREF cr = {}; + if (::GetThemeColor(hTheme, //_In_ HTHEME hTheme, + TEXT_MAININSTRUCTION, // _In_ int iPartId, + 0, // _In_ int iStateId, + TMT_TEXTCOLOR, // _In_ int iPropId, + &cr) == S_OK) // _Out_ COLORREF *pColor + control.SetForegroundColour(wxColor(cr)); + } +#endif #elif defined ZEN_LINUX //https://developer.gnome.org/hig-book/3.2/hig-book.html#alert-text font.SetPointSize(numeric::round(wxNORMAL_FONT->GetPointSize() * 12.0 / 11)); |