getting text colour using the themes API doesn't seem to work, revert to using the global system colours for it [backport from HEAD]

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@45989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-05-12 03:18:46 +00:00
parent b4c10903ff
commit 2a1b187b50

View File

@@ -161,29 +161,36 @@ wxComboCtrl::~wxComboCtrl()
void wxComboCtrl::OnThemeChange() void wxComboCtrl::OnThemeChange()
{ {
wxUxThemeEngine* theme = wxUxThemeEngine::GetIfActive(); // there doesn't seem to be any way to get the text colour using themes
// API: TMT_TEXTCOLOR doesn't work neither for EDIT nor COMBOBOX
SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
wxUxThemeEngine * const theme = wxUxThemeEngine::GetIfActive();
if ( theme ) if ( theme )
{ {
// NB: use EDIT, not COMBOBOX (the latter works in XP but not Vista)
wxUxThemeHandle hTheme(this, L"EDIT"); wxUxThemeHandle hTheme(this, L"EDIT");
COLORREF col; COLORREF col;
HRESULT hr = theme->GetThemeColor(hTheme,EP_EDITTEXT,ETS_NORMAL,TMT_FILLCOLOR,&col); HRESULT hr = theme->GetThemeColor
if ( FAILED(hr) ) (
wxLogApiError(_T("GetThemeColor(EDIT, EP_EDITTEXT, ETS_NORMAL, TMT_FILLCOLOR)"), hr); hTheme,
else EP_EDITTEXT,
ETS_NORMAL,
TMT_FILLCOLOR,
&col
);
if ( SUCCEEDED(hr) )
{
SetBackgroundColour(wxRGBToColour(col)); SetBackgroundColour(wxRGBToColour(col));
hr = theme->GetThemeColor(hTheme,EP_EDITTEXT,ETS_NORMAL,TMT_TEXTCOLOR,&col); // skip the call below
if ( FAILED(hr) ) return;
wxLogApiError(_T("GetThemeColor(EDIT, EP_EDITTEXT, ETS_NORMAL, TMT_TEXTCOLOR)"), hr); }
else
SetForegroundColour(wxRGBToColour(col)); wxLogApiError(_T("GetThemeColor(EDIT, ETS_NORMAL, TMT_FILLCOLOR)"), hr);
}
else
{
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
} }
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
} }
void wxComboCtrl::OnResize() void wxComboCtrl::OnResize()