ReactOS 0.4.16-dev-1019-g2c2cdfd
uxundoc.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tagPARSE_ERROR_INFO
 
struct  tagTHEMENAMES
 

Macros

#define DNCP_ACTIVEWINDOW   0x1
 
#define DNCP_INACTIVEWINDOW   0x2
 
#define DNCP_DIALOGWINDOW   0x4
 
#define DNCP_DRAW_ALL   DNCP_ACTIVEWINDOW | DNCP_INACTIVEWINDOW | DNCP_DIALOGWINDOW
 

Typedefs

typedef HANDLE HTHEMEFILE
 
typedef struct tagPARSE_ERROR_INFO PARSE_ERROR_INFO
 
typedef struct tagPARSE_ERROR_INFOPPARSE_ERROR_INFO
 
typedef BOOL(CALLBACKENUMTHEMEPROC) (LPVOID lpReserved, LPCWSTR pszThemeFileName, LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2, LPVOID lpData)
 
typedef BOOL(CALLBACKPARSETHEMEINIFILEPROC) (DWORD dwType, LPWSTR pszParam1, LPWSTR pszParam2, LPWSTR pszParam3, DWORD dwParam, LPVOID lpData)
 
typedef struct tagTHEMENAMES THEMENAMES
 
typedef struct tagTHEMENAMESPTHEMENAMES
 

Functions

HRESULT WINAPI GetThemeParseErrorInfo (_Inout_ PPARSE_ERROR_INFO pInfo)
 
DWORD WINAPI QueryThemeServices (void)
 
HRESULT WINAPI OpenThemeFile (LPCWSTR pszThemeFileName, LPCWSTR pszColorName, LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile, DWORD unknown)
 
HRESULT WINAPI CloseThemeFile (HTHEMEFILE hThemeFile)
 
HRESULT WINAPI ApplyTheme (HTHEMEFILE hThemeFile, char *unknown, HWND hWnd)
 
HRESULT WINAPI GetThemeDefaults (LPCWSTR pszThemeFileName, LPWSTR pszColorName, DWORD dwColorNameLen, LPWSTR pszSizeName, DWORD dwSizeNameLen)
 
HRESULT WINAPI EnumThemes (LPCWSTR pszThemePath, ENUMTHEMEPROC callback, LPVOID lpData)
 
HRESULT WINAPI EnumThemeColors (LPWSTR pszThemeFileName, LPWSTR pszSizeName, DWORD dwColorNum, PTHEMENAMES pszColorNames)
 
HRESULT WINAPI EnumThemeSizes (LPWSTR pszThemeFileName, LPWSTR pszColorName, DWORD dwSizeNum, PTHEMENAMES pszColorNames)
 
HRESULT WINAPI ParseThemeIniFile (LPCWSTR pszIniFileName, LPWSTR pszUnknown, PARSETHEMEINIFILEPROC callback, LPVOID lpData)
 
HTHEME WINAPI OpenThemeDataFromFile (HTHEMEFILE hThemeFile, HWND hwnd, LPCWSTR pszClassList, DWORD flags)
 
HRESULT WINAPI DrawNCPreview (HDC hDC, DWORD DNCP_Flag, LPRECT prcPreview, LPCWSTR pszThemeFileName, LPCWSTR pszColorName, LPCWSTR pszSizeName, PNONCLIENTMETRICSW pncMetrics, COLORREF *lpaRgbValues)
 
BOOL WINAPI ThemeHooksInstall (VOID)
 
BOOL WINAPI ThemeHooksRemove (VOID)
 

Macro Definition Documentation

◆ DNCP_ACTIVEWINDOW

#define DNCP_ACTIVEWINDOW   0x1

Definition at line 119 of file uxundoc.h.

◆ DNCP_DIALOGWINDOW

#define DNCP_DIALOGWINDOW   0x4

Definition at line 121 of file uxundoc.h.

◆ DNCP_DRAW_ALL

Definition at line 122 of file uxundoc.h.

◆ DNCP_INACTIVEWINDOW

#define DNCP_INACTIVEWINDOW   0x2

Definition at line 120 of file uxundoc.h.

Typedef Documentation

◆ ENUMTHEMEPROC

typedef BOOL(CALLBACK * ENUMTHEMEPROC) (LPVOID lpReserved, LPCWSTR pszThemeFileName, LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2, LPVOID lpData)

Definition at line 37 of file uxundoc.h.

◆ HTHEMEFILE

typedef HANDLE HTHEMEFILE

Definition at line 7 of file uxundoc.h.

◆ PARSE_ERROR_INFO

◆ PARSETHEMEINIFILEPROC

typedef BOOL(CALLBACK * PARSETHEMEINIFILEPROC) (DWORD dwType, LPWSTR pszParam1, LPWSTR pszParam2, LPWSTR pszParam3, DWORD dwParam, LPVOID lpData)

Definition at line 60 of file uxundoc.h.

◆ PPARSE_ERROR_INFO

◆ PTHEMENAMES

◆ THEMENAMES

Function Documentation

◆ ApplyTheme()

HRESULT WINAPI ApplyTheme ( HTHEMEFILE  hThemeFile,
char unknown,
HWND  hWnd 
)

Definition at line 1173 of file system.c.

1174{
1175 HRESULT hr;
1176 TRACE("(%p,%s,%p)\n", hThemeFile, unknown, hWnd);
1177 hr = UXTHEME_ApplyTheme(hThemeFile);
1179 return hr;
1180}
HWND hWnd
Definition: settings.c:17
#define NULL
Definition: types.h:112
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1605
BOOL CALLBACK UXTHEME_broadcast_theme_changed(HWND hWnd, LPARAM enable)
Definition: system.c:70
PTHEME_FILE g_ActiveThemeFile
Definition: system.c:56
static HRESULT UXTHEME_ApplyTheme(PTHEME_FILE tf)
Definition: system.c:514
HRESULT hr
Definition: shlfolder.c:183
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by ActivateTheme().

◆ CloseThemeFile()

HRESULT WINAPI CloseThemeFile ( HTHEMEFILE  hThemeFile)

Definition at line 1142 of file system.c.

1143{
1144 TRACE("(%p)\n", hThemeFile);
1145 MSSTYLES_CloseThemeFile(hThemeFile);
1146 return S_OK;
1147}
#define S_OK
Definition: intsafe.h:52
void MSSTYLES_CloseThemeFile(PTHEME_FILE tf)
Definition: msstyles.c:179

Referenced by ActivateTheme().

◆ DrawNCPreview()

HRESULT WINAPI DrawNCPreview ( HDC  hDC,
DWORD  DNCP_Flag,
LPRECT  prcPreview,
LPCWSTR  pszThemeFileName,
LPCWSTR  pszColorName,
LPCWSTR  pszSizeName,
PNONCLIENTMETRICSW  pncMetrics,
COLORREF lpaRgbValues 
)

Definition at line 1215 of file nonclient.c.

1223{
1224 WNDCLASSEXW DummyPreviewWindowClass;
1225 HWND hwndDummy;
1226 HRESULT hres;
1227 HTHEMEFILE hThemeFile;
1229 LPWSTR szText;
1230 int len;
1231
1232 /* Create a dummy window that will be used to trick the paint funtions */
1233 memset(&DummyPreviewWindowClass, 0, sizeof(DummyPreviewWindowClass));
1234 DummyPreviewWindowClass.cbSize = sizeof(DummyPreviewWindowClass);
1235 DummyPreviewWindowClass.lpszClassName = L"DummyPreviewWindowClass";
1236 DummyPreviewWindowClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
1237 DummyPreviewWindowClass.hInstance = hDllInst;
1238 DummyPreviewWindowClass.lpfnWndProc = DefWindowProcW;
1239 if (!RegisterClassExW(&DummyPreviewWindowClass))
1240 return E_FAIL;
1241
1242 hwndDummy = CreateWindowExW(WS_EX_DLGMODALFRAME, L"DummyPreviewWindowClass", NULL, WS_OVERLAPPEDWINDOW | WS_VSCROLL, 30, 30, 300, 150, 0, 0, hDllInst, NULL);
1243 if (!hwndDummy)
1244 return E_FAIL;
1245
1246 hres = OpenThemeFile(pszThemeFileName, pszColorName, pszSizeName, &hThemeFile,0);
1247 if (FAILED(hres))
1248 return hres;
1249
1250 /* Initialize the special draw context for the preview */
1251 context.hDC = hDC;
1252 context.hWnd = hwndDummy;
1253 context.theme = OpenThemeDataFromFile(hThemeFile, hwndDummy, L"WINDOW", 0);
1254 if (!context.theme)
1255 return E_FAIL;
1256 context.scrolltheme = OpenThemeDataFromFile(hThemeFile, hwndDummy, L"SCROLLBAR", 0);
1257 if (!context.scrolltheme)
1258 return E_FAIL;
1259 context.wi.cbSize = sizeof(context.wi);
1260 if (!GetWindowInfo(hwndDummy, &context.wi))
1261 return E_FAIL;
1262 context.wi.dwStyle |= WS_VISIBLE;
1263
1264 context.hRgn = CreateRectRgnIndirect(&context.wi.rcWindow);
1265 RECT rcAdjPreview = { prcPreview->left, prcPreview->top, prcPreview->right, prcPreview->bottom };
1266 INT previewWidth = rcAdjPreview.right - rcAdjPreview.left;
1267 INT previewHeight = rcAdjPreview.bottom - rcAdjPreview.top;
1268
1269 /* Draw inactive preview window */
1270 context.Active = FALSE;
1272 DrawWindowForNCPreview(hDC, &context, rcAdjPreview.left, rcAdjPreview.top, rcAdjPreview.right - 17, rcAdjPreview.bottom - 20, COLOR_WINDOW, NULL);
1273
1274 /* Draw active preview window */
1275 context.Active = TRUE;
1277
1278 DWORD textDrawFlags = DT_NOPREFIX | DT_SINGLELINE | DT_WORDBREAK;
1279 RECT rcWindowClient;
1280 DrawWindowForNCPreview(hDC, &context, rcAdjPreview.left + 10, rcAdjPreview.top + 22, rcAdjPreview.right, rcAdjPreview.bottom, COLOR_WINDOW, &rcWindowClient);
1281 LOGFONTW lfText;
1282 HFONT textFont = NULL;
1283 if (SUCCEEDED(GetThemeSysFont(context.theme, TMT_MSGBOXFONT, &lfText)))
1284 textFont = CreateFontIndirectW(&lfText);
1285
1286 if (textFont)
1287 SelectFont(hDC, textFont);
1288
1289 HTHEME hBtnTheme = OpenThemeDataFromFile(hThemeFile, hwndDummy, L"BUTTON", OTD_NONCLIENT);
1290 len = LoadStringW(hDllInst, IDS_WINTEXT, (LPWSTR)&szText, 0);
1291 if (len > 0)
1292 {
1293 DTTOPTS dttOpts = { sizeof(dttOpts) };
1294 dttOpts.dwFlags = DTT_TEXTCOLOR;
1295 dttOpts.crText = GetThemeSysColor(context.theme, COLOR_WINDOWTEXT);
1296
1297 DrawThemeTextEx(hBtnTheme, hDC, BP_PUSHBUTTON, PBS_DEFAULTED, szText, len, DT_LEFT | DT_TOP | textDrawFlags, &rcWindowClient, &dttOpts);
1298 }
1299
1300 /* Draw preview dialog window */
1303 SetWindowLongPtr(hwndDummy, GWL_STYLE, dwStyleNew);
1304
1305 if (!GetWindowInfo(hwndDummy, &context.wi))
1306 return E_FAIL;
1307
1308 context.wi.dwStyle = WS_VISIBLE | dwStyleNew;
1309
1310 INT msgBoxHCenter = rcAdjPreview.left + (previewWidth / 2);
1311 INT msgBoxVCenter = rcAdjPreview.top + (previewHeight / 2);
1312
1313 DrawWindowForNCPreview(hDC, &context, msgBoxHCenter - NC_PREVIEW_MSGBOX_HALF_WIDTH, msgBoxVCenter + NC_PREVIEW_MSGBOX_OFFSET_X, msgBoxHCenter + NC_PREVIEW_MSGBOX_HALF_WIDTH, msgBoxVCenter + NC_PREVIEW_MSGBOX_OFFSET_Y, COLOR_BTNFACE, &rcWindowClient);
1314
1315 /* Draw preview dialog button */
1316 if (hBtnTheme)
1317 {
1318 INT btnCenterH = rcWindowClient.left + ((rcWindowClient.right - rcWindowClient.left) / 2);
1319 INT btnCenterV = rcWindowClient.top + ((rcWindowClient.bottom - rcWindowClient.top) / 2);
1320 RECT rcBtn = {btnCenterH - 40, btnCenterV - 15, btnCenterH + 40, btnCenterV + 15};
1321 int btnPart = BP_PUSHBUTTON;
1322 int btnState = PBS_DEFAULTED;
1323 DrawThemeBackground(hBtnTheme, hDC, btnPart, btnState, &rcBtn, NULL);
1324 MARGINS btnContentMargins;
1325 if (GetThemeMargins(hBtnTheme, hDC, btnPart, btnState, TMT_CONTENTMARGINS, NULL, &btnContentMargins) == S_OK)
1326 {
1327 rcBtn.left += btnContentMargins.cxLeftWidth;
1328 rcBtn.top += btnContentMargins.cyTopHeight;
1329 rcBtn.right -= btnContentMargins.cxRightWidth;
1330 rcBtn.bottom -= btnContentMargins.cyBottomHeight;
1331 }
1332
1333 LOGFONTW lfBtn;
1334 if ((GetThemeFont(hBtnTheme, hDC, btnPart, btnState, TMT_FONT, &lfBtn) != S_OK) && textFont)
1335 SelectFont(hDC, textFont);
1336
1337 len = LoadStringW(hDllInst, IDS_OK, (LPWSTR)&szText, 0);
1338 if (len > 0)
1339 DrawThemeText(hBtnTheme, hDC, btnPart, btnState, szText, len, DT_CENTER | DT_VCENTER | textDrawFlags, 0, &rcBtn);
1340 CloseThemeData(hBtnTheme);
1341 }
1342
1343 context.hDC = NULL;
1344 CloseThemeData (context.theme);
1345 CloseThemeData (context.scrolltheme);
1347
1348 /* Cleanup */
1349 DestroyWindow(hwndDummy);
1350 UnregisterClassW(L"DummyPreviewWindowClass", hDllInst);
1351
1352 return S_OK;
1353}
static HDC hDC
Definition: 3dtext.c:33
#define IDS_OK
Definition: resource.h:19
#define E_FAIL
Definition: ddrawi.h:102
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define IDS_WINTEXT
Definition: resource.h:107
HRESULT WINAPI DrawThemeTextEx(_In_ HTHEME hTheme, _In_ HDC hdc, _In_ int iPartId, _In_ int iStateId, _In_ LPCWSTR pszText, _In_ int iCharCount, _In_ DWORD dwTextFlags, _Inout_ LPRECT pRect, _In_ const DTTOPTS *options)
Definition: draw.c:1379
HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
Definition: draw.c:128
HRESULT WINAPI DrawThemeText(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, LPCWSTR pszText, int iCharCount, DWORD dwTextFlags, DWORD dwTextFlags2, const RECT *pRect)
Definition: draw.c:1500
COLORREF WINAPI GetThemeSysColor(HTHEME hTheme, int iColorID)
Definition: metric.c:58
HRESULT WINAPI GetThemeSysFont(HTHEME hTheme, int iFontID, LOGFONTW *plf)
Definition: metric.c:91
void ThemeCleanupDrawContext(PDRAW_CONTEXT pcontext)
Definition: nonclient.c:182
#define NC_PREVIEW_MSGBOX_HALF_WIDTH
Definition: nonclient.c:11
#define NC_PREVIEW_MSGBOX_OFFSET_Y
Definition: nonclient.c:13
VOID SetWindowResourceText(_In_ HWND hwnd, _In_ UINT uID)
Definition: nonclient.c:1194
#define NC_PREVIEW_MSGBOX_OFFSET_X
Definition: nonclient.c:12
static void DrawWindowForNCPreview(_In_ HDC hDC, _In_ PDRAW_CONTEXT pcontext, _In_ INT left, _In_ INT top, _In_ INT right, _In_ INT bottom, _In_ INT clientAreaColor, _Out_opt_ LPRECT prcClient)
Definition: nonclient.c:1088
HRESULT WINAPI GetThemeFont(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, int iPropId, LOGFONTW *pFont)
Definition: property.c:108
HRESULT WINAPI GetThemeMargins(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, int iPropId, RECT *prc, MARGINS *pMargins)
Definition: property.c:216
#define IDS_INACTIVEWIN
Definition: resource.h:14
#define IDS_MESSAGEBOX
Definition: resource.h:12
#define IDS_ACTIVEWIN
Definition: resource.h:13
HINSTANCE hDllInst
Definition: system.c:47
HTHEME WINAPI OpenThemeDataFromFile(HTHEMEFILE hThemeFile, HWND hwnd, LPCWSTR pszClassList, DWORD flags)
Definition: system.c:842
HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName, LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile, DWORD unknown)
Definition: system.c:1116
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
Definition: system.c:965
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
HRESULT hres
Definition: protocol.c:465
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
#define L(x)
Definition: ntvdm.h:50
#define WS_CAPTION
Definition: pedump.c:624
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define WS_OVERLAPPED
Definition: pedump.c:615
#define WS_EX_DLGMODALFRAME
Definition: pedump.c:645
#define WS_SYSMENU
Definition: pedump.c:629
#define WS_VSCROLL
Definition: pedump.c:627
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_DLGFRAME
Definition: pedump.c:626
#define memset(x, y, z)
Definition: compat.h:39
Definition: misc.c:279
int cyBottomHeight
Definition: misc.c:283
int cyTopHeight
Definition: misc.c:282
int cxRightWidth
Definition: misc.c:281
int cxLeftWidth
Definition: misc.c:280
LPCWSTR lpszClassName
Definition: winuser.h:3237
HBRUSH hbrBackground
Definition: winuser.h:3235
WNDPROC lpfnWndProc
Definition: winuser.h:3229
UINT cbSize
Definition: winuser.h:3227
HINSTANCE hInstance
Definition: winuser.h:3232
Definition: http.c:7252
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT
Definition: typedefs.h:58
@ PBS_DEFAULTED
Definition: vsstyle.h:90
@ BP_PUSHBUTTON
Definition: vsstyle.h:74
#define TMT_CONTENTMARGINS
Definition: vssym32.h:324
#define TMT_FONT
Definition: vssym32.h:144
#define TMT_MSGBOXFONT
Definition: vssym32.h:168
#define SelectFont(hdc, hfont)
Definition: windowsx.h:516
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
HRGN WINAPI CreateRectRgnIndirect(_In_ LPCRECT)
#define DT_NOPREFIX
Definition: winuser.h:537
#define COLOR_WINDOW
Definition: winuser.h:929
#define DT_CENTER
Definition: winuser.h:527
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define COLOR_WINDOWTEXT
Definition: winuser.h:932
BOOL WINAPI GetWindowInfo(_In_ HWND, _Inout_ PWINDOWINFO)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define DT_SINGLELINE
Definition: winuser.h:540
#define DT_LEFT
Definition: winuser.h:534
#define DT_TOP
Definition: winuser.h:542
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define DT_WORDBREAK
Definition: winuser.h:544
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
#define DT_VCENTER
Definition: winuser.h:543
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
#define GWL_STYLE
Definition: winuser.h:863
BOOL WINAPI DestroyWindow(_In_ HWND)
#define COLOR_BTNFACE
Definition: winuser.h:939
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by DrawThemePreview().

◆ EnumThemeColors()

HRESULT WINAPI EnumThemeColors ( LPWSTR  pszThemeFileName,
LPWSTR  pszSizeName,
DWORD  dwColorNum,
PTHEMENAMES  pszColorNames 
)

Definition at line 1325 of file system.c.

1327{
1329 HRESULT hr;
1330 LPWSTR tmp;
1331 UINT resourceId = dwColorNum + 1000;
1332 TRACE("(%s,%s,%d)\n", debugstr_w(pszThemeFileName),
1333 debugstr_w(pszSizeName), dwColorNum);
1334
1336 return E_FAIL;
1337
1338 hr = MSSTYLES_OpenThemeFile(pszThemeFileName, NULL, pszSizeName, &pt);
1339 if(FAILED(hr)) return hr;
1340
1341 tmp = pt->pszAvailColors;
1342 while(dwColorNum && *tmp) {
1343 dwColorNum--;
1344 tmp += lstrlenW(tmp)+1;
1345 }
1346 if(!dwColorNum && *tmp) {
1347 TRACE("%s\n", debugstr_w(tmp));
1348 lstrcpyW(pszColorNames->szName, tmp);
1349 LoadStringW (pt->hTheme, resourceId,
1350 pszColorNames->szDisplayName,
1351 sizeof (pszColorNames->szDisplayName) / sizeof (WCHAR));
1352 LoadStringW (pt->hTheme, resourceId+1000,
1353 pszColorNames->szTooltip,
1354 sizeof (pszColorNames->szTooltip) / sizeof (WCHAR));
1355 }
1356 else
1358
1360 return hr;
1361}
#define lstrcpyW
Definition: compat.h:749
#define lstrlenW
Definition: compat.h:750
#define pt(x, y)
Definition: drawing.c:79
#define debugstr_w
Definition: kernel32.h:32
HRESULT MSSTYLES_OpenThemeFile(LPCWSTR lpThemeFile, LPCWSTR pszColorName, LPCWSTR pszSizeName, PTHEME_FILE *tf)
Definition: msstyles.c:54
unsigned int UINT
Definition: ndis.h:50
WCHAR szDisplayName[MAX_PATH+1]
Definition: uxundoc.h:69
WCHAR szName[MAX_PATH+1]
Definition: uxundoc.h:68
WCHAR szTooltip[MAX_PATH+1]
Definition: uxundoc.h:70
BOOL g_bThemeHooksActive
Definition: themehooks.c:15
#define E_PROP_ID_UNSUPPORTED
Definition: vfwmsgs.h:173
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by LoadTheme().

◆ EnumThemes()

HRESULT WINAPI EnumThemes ( LPCWSTR  pszThemePath,
ENUMTHEMEPROC  callback,
LPVOID  lpData 
)

Definition at line 1236 of file system.c.

1238{
1239 WCHAR szDir[MAX_PATH];
1241 static const WCHAR szStar[] = {'*','.','*','\0'};
1242 static const WCHAR szFormat[] = {'%','s','%','s','\\','%','s','.','m','s','s','t','y','l','e','s','\0'};
1243 static const WCHAR szDisplayName[] = {'d','i','s','p','l','a','y','n','a','m','e','\0'};
1244 static const WCHAR szTooltip[] = {'t','o','o','l','t','i','p','\0'};
1245 WCHAR szName[60];
1246 WCHAR szTip[60];
1247 HANDLE hFind;
1248 WIN32_FIND_DATAW wfd;
1249 HRESULT hr;
1250 size_t pathLen;
1251
1252 TRACE("(%s,%p,%p)\n", debugstr_w(pszThemePath), callback, lpData);
1253
1254 if(!pszThemePath || !callback)
1255 return E_POINTER;
1256
1257 lstrcpyW(szDir, pszThemePath);
1258 pathLen = lstrlenW (szDir);
1259 if ((pathLen > 0) && (pathLen < MAX_PATH-1) && (szDir[pathLen - 1] != '\\'))
1260 {
1261 szDir[pathLen] = '\\';
1262 szDir[pathLen+1] = 0;
1263 }
1264
1265 lstrcpyW(szPath, szDir);
1266 lstrcatW(szPath, szStar);
1267 TRACE("searching %s\n", debugstr_w(szPath));
1268
1269 hFind = FindFirstFileW(szPath, &wfd);
1270 if(hFind != INVALID_HANDLE_VALUE) {
1271 do {
1272 if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
1273 && !(wfd.cFileName[0] == '.' && ((wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0))) {
1274 wsprintfW(szPath, szFormat, szDir, wfd.cFileName, wfd.cFileName);
1275
1276 hr = GetThemeDocumentationProperty(szPath, szDisplayName, szName, sizeof(szName)/sizeof(szName[0]));
1277 if(FAILED(hr))
1278 {
1279 ERR("Failed to get theme name from %S\n", szPath);
1280 continue;
1281 }
1282
1283 hr = GetThemeDocumentationProperty(szPath, szTooltip, szTip, sizeof(szTip)/sizeof(szTip[0]));
1284 if (FAILED(hr))
1285 szTip[0] = 0;
1286
1287 TRACE("callback(%s,%s,%s,%p)\n", debugstr_w(szPath), debugstr_w(szName), debugstr_w(szTip), lpData);
1288 if(!callback(NULL, szPath, szName, szTip, NULL, lpData)) {
1289 TRACE("callback ended enum\n");
1290 break;
1291 }
1292 }
1293 } while(FindNextFileW(hFind, &wfd));
1294 FindClose(hFind);
1295 }
1296 return S_OK;
1297}
#define ERR(fmt,...)
Definition: precomp.h:57
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define MAX_PATH
Definition: compat.h:34
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:320
BOOL WINAPI FindClose(HANDLE hFindFile)
Definition: find.c:502
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:382
HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR pszThemeName, LPCWSTR pszPropertyName, LPWSTR pszValueBuff, int cchMaxValChars)
Definition: system.c:1025
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
LPCWSTR szPath
Definition: env.c:37
static IPrintDialogCallback callback
Definition: printdlg.c:326
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
static const WCHAR szName[]
Definition: powrprof.c:45
#define E_POINTER
Definition: winerror.h:2365
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)

Referenced by LoadThemes().

◆ EnumThemeSizes()

HRESULT WINAPI EnumThemeSizes ( LPWSTR  pszThemeFileName,
LPWSTR  pszColorName,
DWORD  dwSizeNum,
PTHEMENAMES  pszColorNames 
)

Definition at line 1388 of file system.c.

1390{
1392 HRESULT hr;
1393 LPWSTR tmp;
1394 UINT resourceId = dwSizeNum + 3000;
1395 TRACE("(%s,%s,%d)\n", debugstr_w(pszThemeFileName),
1396 debugstr_w(pszColorName), dwSizeNum);
1397
1399 return E_FAIL;
1400
1401 hr = MSSTYLES_OpenThemeFile(pszThemeFileName, pszColorName, NULL, &pt);
1402 if(FAILED(hr)) return hr;
1403
1404 tmp = pt->pszAvailSizes;
1405 while(dwSizeNum && *tmp) {
1406 dwSizeNum--;
1407 tmp += lstrlenW(tmp)+1;
1408 }
1409 if(!dwSizeNum && *tmp) {
1410 TRACE("%s\n", debugstr_w(tmp));
1411 lstrcpyW(pszSizeNames->szName, tmp);
1412 LoadStringW (pt->hTheme, resourceId,
1413 pszSizeNames->szDisplayName,
1414 sizeof (pszSizeNames->szDisplayName) / sizeof (WCHAR));
1415 LoadStringW (pt->hTheme, resourceId+1000,
1416 pszSizeNames->szTooltip,
1417 sizeof (pszSizeNames->szTooltip) / sizeof (WCHAR));
1418 }
1419 else
1421
1423 return hr;
1424}

Referenced by LoadTheme().

◆ GetThemeDefaults()

HRESULT WINAPI GetThemeDefaults ( LPCWSTR  pszThemeFileName,
LPWSTR  pszColorName,
DWORD  dwColorNameLen,
LPWSTR  pszSizeName,
DWORD  dwSizeNameLen 
)

Definition at line 1198 of file system.c.

1201{
1203 HRESULT hr;
1204 TRACE("(%s,%p,%d,%p,%d)\n", debugstr_w(pszThemeFileName),
1205 pszColorName, dwColorNameLen,
1206 pszSizeName, dwSizeNameLen);
1207
1209 return E_FAIL;
1210
1211 hr = MSSTYLES_OpenThemeFile(pszThemeFileName, NULL, NULL, &pt);
1212 if(FAILED(hr)) return hr;
1213
1214 lstrcpynW(pszColorName, pt->pszSelectedColor, dwColorNameLen);
1215 lstrcpynW(pszSizeName, pt->pszSelectedSize, dwSizeNameLen);
1216
1218 return S_OK;
1219}
#define lstrcpynW
Definition: compat.h:738

◆ GetThemeParseErrorInfo()

HRESULT WINAPI GetThemeParseErrorInfo ( _Inout_ PPARSE_ERROR_INFO  pInfo)

Definition at line 126 of file errinfo.c.

127{
128 PTMERRINFO pErrInfo;
129 HRESULT hr;
130
131 if (!pInfo)
132 return E_POINTER;
133
134 if (pInfo->cbSize != sizeof(*pInfo))
135 return E_INVALIDARG;
136
138 if (!pErrInfo)
139 return E_OUTOFMEMORY;
140
141 hr = UXTHEME_FormatParseMessage(pErrInfo, pInfo->szDescription, _countof(pInfo->szDescription));
142 if (FAILED(hr))
143 return hr;
144
145 pInfo->nID = pErrInfo->nID;
146 pInfo->nLineNo = pErrInfo->nLineNo;
147 StringCchCopyW(pInfo->szFile, _countof(pInfo->szFile), pErrInfo->szFile);
148 StringCchCopyW(pInfo->szLine, _countof(pInfo->szLine), pErrInfo->szLine);
149 return hr;
150}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
PTMERRINFO UXTHEME_GetParseErrorInfo(_In_ BOOL bCreate)
Definition: errinfo.c:13
static HRESULT UXTHEME_FormatParseMessage(_In_ PTMERRINFO pErrInfo, _Out_ LPWSTR pszDest, _In_ SIZE_T cchDest)
Definition: errinfo.c:64
#define _countof(array)
Definition: sndvol32.h:70
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
WCHAR szFile[MAX_PATH]
Definition: uxthemep.h:98
UINT nID
Definition: uxthemep.h:95
WCHAR szLine[MAX_PATH]
Definition: uxthemep.h:99

Referenced by START_TEST().

◆ OpenThemeDataFromFile()

HTHEME WINAPI OpenThemeDataFromFile ( HTHEMEFILE  hThemeFile,
HWND  hwnd,
LPCWSTR  pszClassList,
DWORD  flags 
)

Definition at line 842 of file system.c.

843{
844 return OpenThemeDataInternal((PTHEME_FILE)hThemeFile, hwnd, pszClassList, flags);
845}
static HTHEME WINAPI OpenThemeDataInternal(PTHEME_FILE ThemeFile, HWND hwnd, LPCWSTR pszClassList, DWORD flags)
Definition: system.c:750
GLbitfield flags
Definition: glext.h:7161
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

Referenced by DrawNCPreview(), and LoadSchemeFromTheme().

◆ OpenThemeFile()

HRESULT WINAPI OpenThemeFile ( LPCWSTR  pszThemeFileName,
LPCWSTR  pszColorName,
LPCWSTR  pszSizeName,
HTHEMEFILE hThemeFile,
DWORD  unknown 
)

Definition at line 1116 of file system.c.

1119{
1120 TRACE("(%s,%s,%s,%p,%d)\n", debugstr_w(pszThemeFileName),
1121 debugstr_w(pszColorName), debugstr_w(pszSizeName),
1122 hThemeFile, unknown);
1123
1125 return E_FAIL;
1126
1127 return MSSTYLES_OpenThemeFile(pszThemeFileName, pszColorName, pszSizeName, (PTHEME_FILE*)hThemeFile);
1128}

Referenced by ActivateTheme(), DrawNCPreview(), and LoadSchemeFromTheme().

◆ ParseThemeIniFile()

HRESULT WINAPI ParseThemeIniFile ( LPCWSTR  pszIniFileName,
LPWSTR  pszUnknown,
PARSETHEMEINIFILEPROC  callback,
LPVOID  lpData 
)

Definition at line 1445 of file system.c.

1447{
1448 FIXME("%s %s: stub\n", debugstr_w(pszIniFileName), debugstr_w(pszUnknown));
1449 return E_NOTIMPL;
1450}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99

Referenced by START_TEST().

◆ QueryThemeServices()

DWORD WINAPI QueryThemeServices ( void  )

Definition at line 1094 of file system.c.

1095{
1096 FIXME("stub\n");
1097 return 3; /* This is what is returned under XP in most cases */
1098}

◆ ThemeHooksInstall()

BOOL WINAPI ThemeHooksInstall ( VOID  )

◆ ThemeHooksRemove()

BOOL WINAPI ThemeHooksRemove ( VOID  )