-void wxComboCtrl::OnThemeChange()
-{
- // 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
- if ( !m_hasFgCol )
- {
- wxColour fgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
- SetForegroundColour(fgCol);
- m_hasFgCol = false;
- }
-
- wxColour bgCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
-
-#if wxUSE_UXTHEME
- wxUxThemeEngine * const theme = wxUxThemeEngine::GetIfActive();
- if ( theme )
- {
- // NB: use EDIT, not COMBOBOX (the latter works in XP but not Vista)
- wxUxThemeHandle hTheme(this, L"EDIT");
- COLORREF col;
- HRESULT hr = theme->GetThemeColor
- (
- hTheme,
- EP_EDITTEXT,
- ETS_NORMAL,
- TMT_FILLCOLOR,
- &col
- );
- if ( SUCCEEDED(hr) )
- {
- bgCol = wxRGBToColour(col);
- }
- else
- {
- wxLogApiError("GetThemeColor(EDIT, ETS_NORMAL, TMT_FILLCOLOR)",
- hr);
- }
- }
-#endif
-
- if ( !m_hasBgCol )
- {
- SetBackgroundColour(bgCol);
- m_hasBgCol = false;
- }
-}
-