/*********************************************************************** * OpenThemeDataEx (UXTHEME.61) */ HTHEME WINAPI OpenThemeDataEx(HWND hwnd, LPCWSTR pszClassList, DWORD flags) { WCHAR szAppBuff[256]; WCHAR szClassBuff[256]; LPCWSTR pszAppName; LPCWSTR pszUseClassList; HTHEME hTheme = NULL; TRACE("(%p,%s, %x)\n", hwnd, debugstr_w(pszClassList), flags); if(flags) FIXME("unhandled flags: %x\n", flags); if(bThemeActive) { pszAppName = UXTHEME_GetWindowProperty(hwnd, atSubAppName, szAppBuff, sizeof(szAppBuff)/sizeof(szAppBuff[0])); /* If SetWindowTheme was used on the window, that overrides the class list passed to this function */ pszUseClassList = UXTHEME_GetWindowProperty(hwnd, atSubIdList, szClassBuff, sizeof(szClassBuff)/sizeof(szClassBuff[0])); if(!pszUseClassList) pszUseClassList = pszClassList; if (pszUseClassList) hTheme = MSSTYLES_OpenThemeClass(pszAppName, pszUseClassList); } if(IsWindow(hwnd)) SetPropW(hwnd, (LPCWSTR)MAKEINTATOM(atWindowTheme), hTheme); TRACE(" = %p\n", hTheme); return hTheme; }
static HTHEME WINAPI OpenThemeDataInternal(PTHEME_FILE ThemeFile, HWND hwnd, LPCWSTR pszClassList, DWORD flags) { WCHAR szAppBuff[256]; WCHAR szClassBuff[256]; LPCWSTR pszAppName; LPCWSTR pszUseClassList; HTHEME hTheme = NULL; TRACE("(%p,%s)\n", hwnd, debugstr_w(pszClassList)); if(!pszClassList) { SetLastError(E_POINTER); return NULL; } if(flags) FIXME("unhandled flags: %x\n", flags); if (ThemeFile) { pszAppName = UXTHEME_GetWindowProperty(hwnd, atSubAppName, szAppBuff, sizeof(szAppBuff)/sizeof(szAppBuff[0])); /* If SetWindowTheme was used on the window, that overrides the class list passed to this function */ pszUseClassList = UXTHEME_GetWindowProperty(hwnd, atSubIdList, szClassBuff, sizeof(szClassBuff)/sizeof(szClassBuff[0])); if(!pszUseClassList) pszUseClassList = pszClassList; if (pszUseClassList) { if (!ThemeFile->classes) MSSTYLES_ParseThemeIni(ThemeFile); hTheme = MSSTYLES_OpenThemeClass(ThemeFile, pszAppName, pszUseClassList); } } if(IsWindow(hwnd)) { SetPropW(hwnd, (LPCWSTR)MAKEINTATOM(atWindowTheme), hTheme); } else { SetLastError(E_PROP_ID_UNSUPPORTED); } SetLastError(hTheme ? ERROR_SUCCESS : E_PROP_ID_UNSUPPORTED); TRACE(" = %p\n", hTheme); return hTheme; }