/*********************************************************************** * GetThemeColor (UXTHEME.@) */ HRESULT WINAPI GetThemeColor(HTHEME hTheme, int iPartId, int iStateId, int iPropId, COLORREF *pColor) { PTHEME_PROPERTY tp; TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId); if(!hTheme) return E_HANDLE; if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, TMT_COLOR, iPropId))) return E_PROP_ID_UNSUPPORTED; return MSSTYLES_GetPropertyColor(tp, pColor); }
/*********************************************************************** * GetThemeSysColor (UXTHEME.@) */ COLORREF WINAPI GetThemeSysColor(HTHEME hTheme, int iColorID) { HRESULT hr; PTHEME_PROPERTY tp; TRACE("(%p, %d)\n", hTheme, iColorID); SetLastError(0); if(hTheme) { if((tp = MSSTYLES_FindMetric(TMT_COLOR, iColorID))) { COLORREF color; hr = MSSTYLES_GetPropertyColor(tp, &color); if(SUCCEEDED(hr)) return color; else SetLastError(hr); } } return GetSysColor(iColorID); }
/*********************************************************************** * GetThemeMetric (UXTHEME.@) */ HRESULT WINAPI GetThemeMetric(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, int iPropId, int *piVal) { PTHEME_PROPERTY tp; WCHAR val[60]; HRESULT hr; TRACE("(%d, %d, %d)\n", iPartId, iStateId, iPropId); if(!hTheme) return E_HANDLE; if(!(tp = MSSTYLES_FindProperty(hTheme, iPartId, iStateId, 0, iPropId))) return E_PROP_ID_UNSUPPORTED; switch(tp->iPrimitiveType) { case TMT_POSITION: /* Only the X coord is retrieved */ case TMT_MARGINS: /* Only the cxLeftWidth member is retrieved */ case TMT_INTLIST: /* Only the first int is retrieved */ case TMT_SIZE: case TMT_INT: return MSSTYLES_GetPropertyInt(tp, piVal); case TMT_BOOL: return MSSTYLES_GetPropertyBool(tp, piVal); case TMT_COLOR: return MSSTYLES_GetPropertyColor(tp, (COLORREF*)piVal); case TMT_ENUM: hr = MSSTYLES_GetPropertyString(tp, val, sizeof(val)/sizeof(val[0])); if(FAILED(hr)) return hr; if(!MSSTYLES_LookupEnum(val, iPropId, piVal)) return E_PROP_ID_UNSUPPORTED; return S_OK; case TMT_FILENAME: /* Windows does return a value for this, but its value doesn't make sense */ FIXME("Filename\n"); break; } return E_PROP_ID_UNSUPPORTED; }
/*********************************************************************** * GetThemeSysColor (UXTHEME.@) */ COLORREF WINAPI GetThemeSysColor(HTHEME hTheme, int iColorID) { HRESULT hr; PTHEME_PROPERTY tp; // TODO: Check if this is correct if ( iColorID >= 0 && iColorID < 32) iColorID += TMT_SCROLLBAR; TRACE("(%p, %d)\n", hTheme, iColorID); SetLastError(0); if(hTheme) { PTHEME_CLASS ptc = (PTHEME_CLASS) hTheme; if((tp = MSSTYLES_FindMetric(ptc->tf, TMT_COLOR, iColorID))) { COLORREF color; hr = MSSTYLES_GetPropertyColor(tp, &color); if(SUCCEEDED(hr)) return color; else SetLastError(hr); } } return GetSysColor(iColorID); }