ReactOS 0.4.16-dev-1405-gc14a14e
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 UXTAPPLYFLAG_LOADSYSTEMMETRICS   0x01
 
#define UXTAPPLYFLAG_APPLYSYSTEMMETRICS   0x20
 
#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, UINT Flags, HWND hWnd)
 
HRESULT WINAPI SetSystemVisualStyle (PCWSTR pszStyleFile, PCWSTR pszColor, PCWSTR pszSize, UINT Flags)
 
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 127 of file uxundoc.h.

◆ DNCP_DIALOGWINDOW

#define DNCP_DIALOGWINDOW   0x4

Definition at line 129 of file uxundoc.h.

◆ DNCP_DRAW_ALL

Definition at line 130 of file uxundoc.h.

◆ DNCP_INACTIVEWINDOW

#define DNCP_INACTIVEWINDOW   0x2

Definition at line 128 of file uxundoc.h.

◆ UXTAPPLYFLAG_APPLYSYSTEMMETRICS

#define UXTAPPLYFLAG_APPLYSYSTEMMETRICS   0x20

Definition at line 85 of file uxundoc.h.

◆ UXTAPPLYFLAG_LOADSYSTEMMETRICS

#define UXTAPPLYFLAG_LOADSYSTEMMETRICS   0x01

Definition at line 84 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,
UINT  Flags,
HWND  hWnd 
)

◆ CloseThemeFile()

HRESULT WINAPI CloseThemeFile ( HTHEMEFILE  hThemeFile)

Definition at line 1213 of file system.c.

1214{
1215 TRACE("(%p)\n", hThemeFile);
1216 MSSTYLES_CloseThemeFile(hThemeFile);
1217 return S_OK;
1218}
#define S_OK
Definition: intsafe.h:52
void MSSTYLES_CloseThemeFile(PTHEME_FILE tf)
Definition: msstyles.c:179
#define TRACE(s)
Definition: solgame.cpp:4

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 NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define IDS_WINTEXT
Definition: resource.h:107
INT WINAPI DECLSPEC_HOTPATCH LoadStringW(HINSTANCE instance, UINT resource_id, LPWSTR buffer, INT buflen)
Definition: string.c:1220
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:882
HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName, LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile, DWORD unknown)
Definition: system.c:1187
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
Definition: system.c:1036
#define L(x)
Definition: resources.c:13
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 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:3302
HBRUSH hbrBackground
Definition: winuser.h:3300
WNDPROC lpfnWndProc
Definition: winuser.h:3294
UINT cbSize
Definition: winuser.h:3292
HINSTANCE hInstance
Definition: winuser.h:3297
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)
#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 1433 of file system.c.

1435{
1437 HRESULT hr;
1438 LPWSTR tmp;
1439 UINT resourceId = dwColorNum + 1000;
1440 TRACE("(%s,%s,%d)\n", debugstr_w(pszThemeFileName),
1441 debugstr_w(pszSizeName), dwColorNum);
1442
1444 return E_FAIL;
1445
1446 hr = MSSTYLES_OpenThemeFile(pszThemeFileName, NULL, pszSizeName, &pt);
1447 if(FAILED(hr)) return hr;
1448
1449 tmp = pt->pszAvailColors;
1450 while(dwColorNum && *tmp) {
1451 dwColorNum--;
1452 tmp += lstrlenW(tmp)+1;
1453 }
1454 if(!dwColorNum && *tmp) {
1455 TRACE("%s\n", debugstr_w(tmp));
1456 lstrcpyW(pszColorNames->szName, tmp);
1457 LoadStringW (pt->hTheme, resourceId,
1458 pszColorNames->szDisplayName,
1459 sizeof (pszColorNames->szDisplayName) / sizeof (WCHAR));
1460 LoadStringW (pt->hTheme, resourceId+1000,
1461 pszColorNames->szTooltip,
1462 sizeof (pszColorNames->szTooltip) / sizeof (WCHAR));
1463 }
1464 else
1466
1468 return hr;
1469}
#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
HRESULT hr
Definition: shlfolder.c:183
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 1344 of file system.c.

1346{
1347 WCHAR szDir[MAX_PATH];
1349 static const WCHAR szStar[] = {'*','.','*','\0'};
1350 static const WCHAR szFormat[] = {'%','s','%','s','\\','%','s','.','m','s','s','t','y','l','e','s','\0'};
1351 static const WCHAR szDisplayName[] = {'d','i','s','p','l','a','y','n','a','m','e','\0'};
1352 static const WCHAR szTooltip[] = {'t','o','o','l','t','i','p','\0'};
1353 WCHAR szName[60];
1354 WCHAR szTip[60];
1355 HANDLE hFind;
1356 WIN32_FIND_DATAW wfd;
1357 HRESULT hr;
1358 size_t pathLen;
1359
1360 TRACE("(%s,%p,%p)\n", debugstr_w(pszThemePath), callback, lpData);
1361
1362 if(!pszThemePath || !callback)
1363 return E_POINTER;
1364
1365 lstrcpyW(szDir, pszThemePath);
1366 pathLen = lstrlenW (szDir);
1367 if ((pathLen > 0) && (pathLen < MAX_PATH-1) && (szDir[pathLen - 1] != '\\'))
1368 {
1369 szDir[pathLen] = '\\';
1370 szDir[pathLen+1] = 0;
1371 }
1372
1373 lstrcpyW(szPath, szDir);
1374 lstrcatW(szPath, szStar);
1375 TRACE("searching %s\n", debugstr_w(szPath));
1376
1377 hFind = FindFirstFileW(szPath, &wfd);
1378 if(hFind != INVALID_HANDLE_VALUE) {
1379 do {
1380 if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
1381 && !(wfd.cFileName[0] == '.' && ((wfd.cFileName[1] == '.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0))) {
1382 wsprintfW(szPath, szFormat, szDir, wfd.cFileName, wfd.cFileName);
1383
1384 hr = GetThemeDocumentationProperty(szPath, szDisplayName, szName, sizeof(szName)/sizeof(szName[0]));
1385 if(FAILED(hr))
1386 {
1387 ERR("Failed to get theme name from %S\n", szPath);
1388 continue;
1389 }
1390
1391 hr = GetThemeDocumentationProperty(szPath, szTooltip, szTip, sizeof(szTip)/sizeof(szTip[0]));
1392 if (FAILED(hr))
1393 szTip[0] = 0;
1394
1395 TRACE("callback(%s,%s,%s,%p)\n", debugstr_w(szPath), debugstr_w(szName), debugstr_w(szTip), lpData);
1396 if(!callback(NULL, szPath, szName, szTip, NULL, lpData)) {
1397 TRACE("callback ended enum\n");
1398 break;
1399 }
1400 }
1401 } while(FindNextFileW(hFind, &wfd));
1402 FindClose(hFind);
1403 }
1404 return S_OK;
1405}
#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:1096
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 1496 of file system.c.

1498{
1500 HRESULT hr;
1501 LPWSTR tmp;
1502 UINT resourceId = dwSizeNum + 3000;
1503 TRACE("(%s,%s,%d)\n", debugstr_w(pszThemeFileName),
1504 debugstr_w(pszColorName), dwSizeNum);
1505
1507 return E_FAIL;
1508
1509 hr = MSSTYLES_OpenThemeFile(pszThemeFileName, pszColorName, NULL, &pt);
1510 if(FAILED(hr)) return hr;
1511
1512 tmp = pt->pszAvailSizes;
1513 while(dwSizeNum && *tmp) {
1514 dwSizeNum--;
1515 tmp += lstrlenW(tmp)+1;
1516 }
1517 if(!dwSizeNum && *tmp) {
1518 TRACE("%s\n", debugstr_w(tmp));
1519 lstrcpyW(pszSizeNames->szName, tmp);
1520 LoadStringW (pt->hTheme, resourceId,
1521 pszSizeNames->szDisplayName,
1522 sizeof (pszSizeNames->szDisplayName) / sizeof (WCHAR));
1523 LoadStringW (pt->hTheme, resourceId+1000,
1524 pszSizeNames->szTooltip,
1525 sizeof (pszSizeNames->szTooltip) / sizeof (WCHAR));
1526 }
1527 else
1529
1531 return hr;
1532}

Referenced by LoadTheme().

◆ GetThemeDefaults()

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

Definition at line 1299 of file system.c.

1302{
1304 HRESULT hr;
1305 TRACE("(%s,%p,%d,%p,%d)\n", debugstr_w(pszThemeFileName),
1306 pszColorName, dwColorNameLen,
1307 pszSizeName, dwSizeNameLen);
1308
1310 return E_FAIL;
1311
1312 hr = MSSTYLES_OpenThemeFile(pszThemeFileName, NULL, NULL, &pt);
1313 if(FAILED(hr)) return hr;
1314
1315#ifdef __REACTOS__
1316 if (pszColorName)
1317 lstrcpynW(pszColorName, pt->pszSelectedColor, dwColorNameLen);
1318 if (pszSizeName)
1319 lstrcpynW(pszSizeName, pt->pszSelectedSize, dwSizeNameLen);
1320#else
1321 lstrcpynW(pszColorName, pt->pszSelectedColor, dwColorNameLen);
1322 lstrcpynW(pszSizeName, pt->pszSelectedSize, dwSizeNameLen);
1323#endif
1324
1326 return S_OK;
1327}
#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 882 of file system.c.

883{
884 return OpenThemeDataInternal((PTHEME_FILE)hThemeFile, hwnd, pszClassList, flags);
885}
static HTHEME WINAPI OpenThemeDataInternal(PTHEME_FILE ThemeFile, HWND hwnd, LPCWSTR pszClassList, DWORD flags)
Definition: system.c:790
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 1187 of file system.c.

1190{
1191 TRACE("(%s,%s,%s,%p,%d)\n", debugstr_w(pszThemeFileName),
1192 debugstr_w(pszColorName), debugstr_w(pszSizeName),
1193 hThemeFile, unknown);
1194
1196 return E_FAIL;
1197
1198 return MSSTYLES_OpenThemeFile(pszThemeFileName, pszColorName, pszSizeName, (PTHEME_FILE*)hThemeFile);
1199}
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1605

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

◆ ParseThemeIniFile()

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

Definition at line 1553 of file system.c.

1555{
1556 FIXME("%s %s: stub\n", debugstr_w(pszIniFileName), debugstr_w(pszUnknown));
1557 return E_NOTIMPL;
1558}
#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 1165 of file system.c.

1166{
1167 FIXME("stub\n");
1168 return 3; /* This is what is returned under XP in most cases */
1169}

◆ SetSystemVisualStyle()

HRESULT WINAPI SetSystemVisualStyle ( PCWSTR  pszStyleFile,
PCWSTR  pszColor,
PCWSTR  pszSize,
UINT  Flags 
)

◆ ThemeHooksInstall()

BOOL WINAPI ThemeHooksInstall ( VOID  )

◆ ThemeHooksRemove()

BOOL WINAPI ThemeHooksRemove ( VOID  )