uxtheme: basic implementation of all functions

Kevin Koltzau kevin at plop.org
Sun Nov 30 23:01:02 CST 2003


Second attempt at this, as my last patch wasn't committed (which is probably a 
good thing as I've moved in a bit of a different direction).

Most of what this patch does is define all functions in the library.
Some applications seem to just start calling functions without determing if 
theming is available, and the fact that most functions were stubbed out 
caused a problem. This should take care of that.

I appologize for the size of this, as none of this code does much I figured 
I'd just send it in one big patch..if thats a problem I'd be glad to split it 
up a bit

-Kevin Koltzau


Index: dlls/uxtheme/.cvsignore
===================================================================
RCS file: /home/wine/wine/dlls/uxtheme/.cvsignore,v
retrieving revision 1.1
diff -u -r1.1 .cvsignore
--- dlls/uxtheme/.cvsignore	4 Oct 2003 03:48:11 -0000	1.1
+++ dlls/uxtheme/.cvsignore	1 Dec 2003 04:44:35 -0000
@@ -2,3 +2,4 @@
 uxtheme.dll.dbg.c
 uxtheme.spec.c
 uxtheme.spec.def
+version.res
Index: dlls/uxtheme/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/uxtheme/Makefile.in,v
retrieving revision 1.2
diff -u -r1.2 Makefile.in
--- dlls/uxtheme/Makefile.in	11 Oct 2003 01:09:17 -0000	1.2
+++ dlls/uxtheme/Makefile.in	1 Dec 2003 04:44:35 -0000
@@ -7,7 +7,13 @@
 EXTRALIBS = $(LIBUNICODE)

 C_SRCS = \
-	main.c
+	main.c \
+	property.c \
+	metric.c \
+	draw.c \
+	system.c
+
+RC_SRCS = version.rc

 @MAKE_DLL_RULES@

Index: dlls/uxtheme/main.c
===================================================================
RCS file: /home/wine/wine/dlls/uxtheme/main.c,v
retrieving revision 1.1
diff -u -r1.1 main.c
--- dlls/uxtheme/main.c	4 Oct 2003 03:48:11 -0000	1.1
+++ dlls/uxtheme/main.c	1 Dec 2003 04:44:35 -0000
@@ -24,57 +24,31 @@

 #include "windef.h"
 #include "winbase.h"
-#include "winuser.h"
-#include "wingdi.h"
-#include "uxtheme.h"

 #include "wine/debug.h"

 WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);

+/***********************************************************************
+ * Defines and global variables
+ */
+
+void UXTHEME_InitSystem();
+
+/***********************************************************************/
+
 /* For the moment, do nothing here. */
 BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
 {
+    TRACE("%p 0x%lx %p: stub\n", hInstDLL, fdwReason, lpv);
     switch(fdwReason) {
         case DLL_PROCESS_ATTACH:
             DisableThreadLibraryCalls(hInstDLL);
-	    break;
-	case DLL_PROCESS_DETACH:
-	    break;
+            UXTHEME_InitSystem();
+            break;
+        case DLL_PROCESS_DETACH:
+            break;
     }
     return TRUE;
 }

-BOOL WINAPI IsAppThemed(void)
-{
-    FIXME("\n");
-    return FALSE;
-}
-
-BOOL WINAPI IsThemeActive(void)
-{
-    FIXME("\n");
-    return FALSE;
-}
-
-HRESULT WINAPI EnableThemeDialogTexture(HWND hwnd, DWORD dwFlags) {
-    FIXME("%p 0x%08lx\n", hwnd, dwFlags);
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-HRESULT WINAPI EnableTheming(BOOL fEnable) {
-    FIXME("%d\n", fEnable);
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR pszClassList) {
-    FIXME("%p %s\n", hwnd, debugstr_w(pszClassList));
-    return NULL;
-}
-
-HRESULT WINAPI SetWindowTheme(HWND hwnd, LPCWSTR pszSubAppName,
-                              LPCWSTR pszSubIdList) {
-    FIXME("%p %s %s\n", hwnd, debugstr_w(pszSubAppName),
-          debugstr_w(pszSubIdList));
-    return ERROR_CALL_NOT_IMPLEMENTED;
-}
Index: dlls/uxtheme/uxtheme.spec
===================================================================
RCS file: /home/wine/wine/dlls/uxtheme/uxtheme.spec,v
retrieving revision 1.1
diff -u -r1.1 uxtheme.spec
--- dlls/uxtheme/uxtheme.spec	4 Oct 2003 03:48:11 -0000	1.1
+++ dlls/uxtheme/uxtheme.spec	1 Dec 2003 04:44:35 -0000
@@ -1,48 +1,93 @@
-@ stub CloseThemeData
-@ stub DrawThemeBackground
-@ stub DrawThemeBackgroundEx
-@ stub DrawThemeEdge
-@ stub DrawThemeIcon
-@ stub DrawThemeParentBackground
-@ stub DrawThemeText
+# Undocumented functions - Names derived from debug symbols
+1  stdcall QueryThemeServices()
+2  stdcall OpenThemeFile(wstr wstr wstr ptr long)
+3  stdcall CloseThemeFile(ptr)
+4  stdcall ApplyTheme(ptr ptr ptr)
+7  stdcall GetThemeDefaults(wstr wstr long wstr long)
+8  stdcall EnumThemes(wstr ptr ptr)
+9  stdcall EnumThemeColors(wstr wstr long wstr)
+10 stdcall EnumThemeSizes(wstr wstr long wstr)
+11 stdcall ParseThemeIniFile(wstr wstr ptr ptr)
+13 stub DrawNCPreview
+14 stub RegisterDefaultTheme
+15 stub DumpLoadedThemeToTextFile
+16 stub OpenThemeDataFromFile
+17 stub OpenThemeFileFromData
+18 stub GetThemeSysSize96
+19 stub GetThemeSysFont96
+20 stub SessionAllocate
+21 stub SessionFree
+22 stub ThemeHooksOn
+23 stub ThemeHooksOff
+24 stub AreThemeHooksActive
+25 stub GetCurrentChangeNumber
+26 stub GetNewChangeNumber
+27 stub SetGlobalTheme
+28 stub GetGlobalTheme
+29 stub CheckThemeSignature
+30 stub LoadTheme
+31 stub InitUserTheme
+32 stub InitUserRegistry
+33 stub ReestablishServerConnection
+34 stub ThemeHooksInstall
+35 stub ThemeHooksRemove
+36 stub RefreshThemeForTS
+43 stub ClassicGetSystemMetrics
+44 stub ClassicSystemParametersInfoA
+45 stub ClassicSystemParametersInfoW
+46 stub ClassicAdjustWindowRectEx
+48 stub GetThemeParseErrorInfo
+60 stub CreateThemeDataFromObjects
+61 stub OpenThemeDataEx
+62 stub ServerClearStockObjects
+63 stub MarkSelection
+
+# Standard functions
+@ stdcall CloseThemeData(ptr)
+@ stdcall DrawThemeBackground(ptr ptr long long ptr ptr)
+@ stdcall DrawThemeBackgroundEx(ptr ptr long long ptr ptr)
+@ stdcall DrawThemeEdge(ptr ptr long long ptr long long ptr)
+@ stdcall DrawThemeIcon(ptr ptr long long ptr ptr long)
+@ stdcall DrawThemeParentBackground(ptr ptr ptr)
+@ stdcall DrawThemeText(ptr ptr long long wstr long long long ptr)
 @ stdcall EnableThemeDialogTexture(ptr long)
 @ stdcall EnableTheming(long)
-@ stub GetCurrentThemeName
-@ stub GetThemeAppProperties
-@ stub GetThemeBackgroundContentRect
-@ stub GetThemeBackgroundExtent
-@ stub GetThemeBackgroundRegion
-@ stub GetThemeBool
-@ stub GetThemeColor
-@ stub GetThemeDocumentationProperty
-@ stub GetThemeEnumValue
-@ stub GetThemeFilename
-@ stub GetThemeFont
-@ stub GetThemeInt
-@ stub GetThemeIntList
-@ stub GetThemeMargins
-@ stub GetThemeMetric
-@ stub GetThemePartSize
-@ stub GetThemePosition
-@ stub GetThemePropertyOrigin
-@ stub GetThemeRect
-@ stub GetThemeString
-@ stub GetThemeSysBool
-@ stub GetThemeSysColor
-@ stub GetThemeSysColorBrush
-@ stub GetThemeSysFont
-@ stub GetThemeSysInt
-@ stub GetThemeSysSize
-@ stub GetThemeSysString
-@ stub GetThemeTextExtent
-@ stub GetThemeTextMetrics
-@ stub GetWindowTheme
-@ stub HitTestThemeBackground
+@ stdcall GetCurrentThemeName(wstr long wstr long wstr long)
+@ stdcall GetThemeAppProperties()
+@ stdcall GetThemeBackgroundContentRect(ptr ptr long long ptr ptr)
+@ stdcall GetThemeBackgroundExtent(ptr ptr long long ptr ptr)
+@ stdcall GetThemeBackgroundRegion(ptr ptr long long ptr ptr)
+@ stdcall GetThemeBool(ptr long long long ptr)
+@ stdcall GetThemeColor(ptr long long long ptr)
+@ stdcall GetThemeDocumentationProperty(wstr wstr wstr long)
+@ stdcall GetThemeEnumValue(ptr long long long ptr)
+@ stdcall GetThemeFilename(ptr long long long wstr long)
+@ stdcall GetThemeFont(ptr ptr long long long ptr)
+@ stdcall GetThemeInt(ptr long long long ptr)
+@ stdcall GetThemeIntList(ptr long long long ptr)
+@ stdcall GetThemeMargins(ptr ptr long long long ptr ptr)
+@ stdcall GetThemeMetric(ptr ptr long long long ptr)
+@ stdcall GetThemePartSize(ptr ptr long long ptr long ptr)
+@ stdcall GetThemePosition(ptr long long long ptr)
+@ stdcall GetThemePropertyOrigin(ptr long long long ptr)
+@ stdcall GetThemeRect(ptr long long long ptr)
+@ stdcall GetThemeString(ptr long long long wstr long)
+@ stdcall GetThemeSysBool(ptr long)
+@ stdcall GetThemeSysColor(ptr long)
+@ stdcall GetThemeSysColorBrush(ptr long)
+@ stdcall GetThemeSysFont(ptr long ptr)
+@ stdcall GetThemeSysInt(ptr long ptr)
+@ stdcall GetThemeSysSize(ptr long)
+@ stdcall GetThemeSysString(ptr long wstr long)
+@ stdcall GetThemeTextExtent(ptr ptr long long wstr long long ptr ptr)
+@ stdcall GetThemeTextMetrics(ptr ptr long long ptr)
+@ stdcall GetWindowTheme(ptr)
+@ stdcall HitTestThemeBackground(ptr ptr long long long ptr ptr long ptr)
 @ stdcall IsAppThemed()
 @ stdcall IsThemeActive()
-@ stub IsThemeBackgroundPartiallyTransparent
-@ stub IsThemeDialogTextureEnabled
-@ stub IsThemePartDefined
+@ stdcall IsThemeBackgroundPartiallyTransparent(ptr long long)
+@ stdcall IsThemeDialogTextureEnabled()
+@ stdcall IsThemePartDefined(ptr long long)
 @ stdcall OpenThemeData(ptr wstr)
-@ stub SetThemeAppProperties
+@ stdcall SetThemeAppProperties(long)
 @ stdcall SetWindowTheme(ptr wstr wstr)
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/system.c	2003-11-30 23:22:02.000000000 -0500
@@ -0,0 +1,418 @@
+/*
+ * Win32 5.1 Theme system
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "uxtheme.h"
+
+#include "uxthemedll.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
+
+/***********************************************************************
+ * Defines and global variables
+ */
+
+DWORD dwThemeAppProperties = STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS;
+ATOM atWindowTheme;
+ATOM atSubAppName;
+ATOM atSubIdList;
+
+/***********************************************************************/
+
+/***********************************************************************
+ *      UXTHEME_InitSystem
+ */
+void UXTHEME_InitSystem()
+{
+    const WCHAR szWindowTheme[] = {
+        'u','x','_','t','h','e','m','e','\0'
+    };
+    const WCHAR szSubAppName[] = {
+        'u','x','_','s','u','b','a','p','p','\0'
+    };
+    const WCHAR szSubIdList[] = {
+        'u','x','_','s','u','b','i','d','l','s','t','\0'
+    };
+
+    atWindowTheme = GlobalAddAtomW(szWindowTheme);
+    atSubAppName  = GlobalAddAtomW(szSubAppName);
+    atSubIdList   = GlobalAddAtomW(szSubIdList);
+}
+
+/***********************************************************************
+ *      IsAppThemed                                         (UXTHEME.@)
+ */
+BOOL WINAPI IsAppThemed(void)
+{
+    FIXME("stub\n");
+    return FALSE;
+}
+
+/***********************************************************************
+ *      IsThemeActive                                       (UXTHEME.@)
+ */
+BOOL WINAPI IsThemeActive(void)
+{
+    FIXME("stub\n");
+    return FALSE;
+}
+
+/***********************************************************************
+ *      EnableTheming                                       (UXTHEME.@)
+ *
+ * NOTES
+ * This is a global and persistant change
+ */
+HRESULT WINAPI EnableTheming(BOOL fEnable)
+{
+    FIXME("%d: stub\n", fEnable);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+ }
+
+/***********************************************************************
+ *      OpenThemeData                                       (UXTHEME.@)
+ */
+HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR pszClassList)
+{
+    FIXME("%p %s: stub\n", hwnd, debugstr_w(pszClassList));
+    return NULL;
+}
+
+/***********************************************************************
+ *      GetWindowTheme                                      (UXTHEME.@)
+ *
+ * Retrieve the last theme opened for a window
+ */
+HTHEME WINAPI GetWindowTheme(HWND hwnd)
+{
+    TRACE("(%p)\n", hwnd);
+    return GetPropW(hwnd, MAKEINTATOMW(atWindowTheme));
+}
+
+/***********************************************************************
+ *      UXTHEME_SetWindowProperty
+ *
+ * I'm using atoms as there may be large numbers of duplicated strings
+ * and they do the work of keeping memory down as a cause of that quite 
nicely
+ */
+HRESULT UXTHEME_SetWindowProperty(HWND hwnd, ATOM aProp, LPCWSTR pszValue)
+{
+    ATOM oldValue = (ATOM)(size_t)RemovePropW(hwnd, MAKEINTATOMW(aProp));
+    if(oldValue)
+        DeleteAtom(oldValue);
+    if(pszValue) {
+        ATOM atValue = AddAtomW(pszValue);
+        if(!atValue
+           || !SetPropW(hwnd, MAKEINTATOMW(aProp), 
(LPWSTR)MAKEINTATOMW(atValue))) {
+            HRESULT hr = HRESULT_FROM_WIN32(GetLastError());
+            if(atValue) DeleteAtom(atValue);
+            return hr;
+        }
+    }
+    return S_OK;
+}
+
+/***********************************************************************
+ *      SetWindowTheme                                      (UXTHEME.@)
+ *
+ * Persistant through the life of the window, even after themes change
+ */
+HRESULT WINAPI SetWindowTheme(HWND hwnd, LPCWSTR pszSubAppName,
+                              LPCWSTR pszSubIdList)
+{
+    HRESULT hr;
+    TRACE("(%p,%s,%s)\n", hwnd, debugstr_w(pszSubAppName),
+          debugstr_w(pszSubIdList));
+    hr = UXTHEME_SetWindowProperty(hwnd, atSubAppName, pszSubAppName);
+    if(SUCCEEDED(hr))
+      hr = UXTHEME_SetWindowProperty(hwnd, atSubIdList, pszSubIdList);
+    return hr;
+}
+
+/***********************************************************************
+ *      GetCurrentThemeName                                 (UXTHEME.@)
+ */
+HRESULT WINAPI GetCurrentThemeName(LPWSTR pszThemeFileName, int 
dwMaxNameChars,
+                                   LPWSTR pszColorBuff, int cchMaxColorChars,
+                                   LPWSTR pszSizeBuff, int cchMaxSizeChars)
+{
+    FIXME("stub\n");
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeAppProperties                               (UXTHEME.@)
+ */
+DWORD WINAPI GetThemeAppProperties(void)
+{
+    return dwThemeAppProperties;
+}
+
+/***********************************************************************
+ *      SetThemeAppProperties                               (UXTHEME.@)
+ */
+void WINAPI SetThemeAppProperties(DWORD dwFlags)
+{
+    TRACE("(0x%08lx)\n", dwFlags);
+    dwThemeAppProperties = dwFlags;
+}
+
+/***********************************************************************
+ *      CloseThemeData                                      (UXTHEME.@)
+ */
+HRESULT WINAPI CloseThemeData(HTHEME hTheme)
+{
+    FIXME("stub\n");
+    if(!hTheme)
+        return E_HANDLE;
+    return S_OK;
+}
+
+/***********************************************************************
+ *      HitTestThemeBackground                              (UXTHEME.@)
+ */
+HRESULT WINAPI HitTestThemeBackground(HTHEME hTheme, HDC hdc, int iPartId,
+                                     int iStateId, DWORD dwOptions,
+                                     const RECT *pRect, HRGN hrgn,
+                                     POINT ptTest, WORD *pwHitTestCode)
+{
+    FIXME("%d %d 0x%08lx: stub\n", iPartId, iStateId, dwOptions);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      IsThemePartDefined                                  (UXTHEME.@)
+ */
+BOOL WINAPI IsThemePartDefined(HTHEME hTheme, int iPartId, int iStateId)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    return FALSE;
+}
+
+/**********************************************************************
+ *      Undocumented functions
+ */
+
+/**********************************************************************
+ *      QueryThemeServices                                 (UXTHEME.1)
+ *
+ * RETURNS
+ *     some kind of status flag
+ */
+DWORD WINAPI QueryThemeServices()
+{
+    FIXME("stub\n");
+    return 3; /* This is what is returned under XP in most cases */
+}
+
+
+/**********************************************************************
+ *      OpenThemeFile                                      (UXTHEME.2)
+ *
+ * Opens a theme file, which can be used to change the current theme, etc
+ *
+ * PARAMS
+ *     pszThemeFileName    Path to a msstyles theme file
+ *     pszColorName        Color defined in the theme, eg. NormalColor
+ *     pszSizeName         Size defined in the theme, eg. NormalSize
+ *     hThemeFile          Handle to theme file
+ */
+HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName,
+                             LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile,
+                             DWORD unknown)
+{
+    FIXME("%s,%s,%s,%ld: stub\n", debugstr_w(pszThemeFileName),
+          debugstr_w(pszColorName),
+          debugstr_w(pszSizeName), unknown);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/**********************************************************************
+ *      CloseThemeFile                                     (UXTHEME.3)
+ *
+ * Releases theme file handle returned by OpenThemeFile
+ *
+ * PARAMS
+ *     hThemeFile           Handle to theme file
+ */
+HRESULT WINAPI CloseThemeFile(HTHEMEFILE hThemeFile)
+{
+    FIXME("stub\n");
+    return S_OK;
+}
+
+/**********************************************************************
+ *      ApplyTheme                                         (UXTHEME.4)
+ *
+ * Set a theme file to be the currently active theme
+ *
+ * PARAMS
+ *     hThemeFile           Handle to theme file
+ *     unknown              See notes
+ *     hWnd                 Window requesting the theme change
+ *
+ * NOTES
+ * I'm not sure what the second parameter is (the datatype is likely wrong), 
other then this:
+ * Under XP if I pass
+ * char b[] = "";
+ *   the theme is applied with the screen redrawing really badly (flickers)
+ * char b[] = "\0"; where \0 can be one or more of any character, makes no 
difference
+ *   the theme is applied smoothly (screen does not flicker)
+ * char *b = "\0" or NULL; where \0 can be zero or more of any character, 
makes no difference
+ *   the function fails returning invalid parameter...very strange
+ */
+HRESULT WINAPI ApplyTheme(HTHEMEFILE hThemeFile, char *unknown, HWND hWnd)
+{
+    FIXME("%s: stub\n", unknown);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/**********************************************************************
+ *      GetThemeDefaults                                   (UXTHEME.7)
+ *
+ * Get the default color & size for a theme
+ *
+ * PARAMS
+ *     pszThemeFileName    Path to a msstyles theme file
+ *     pszColorName        Buffer to recieve the default color name
+ *     dwColorNameLen      Length, in characters, of color name buffer
+ *     pszSizeName         Buffer to recieve the default size name
+ *     dwSizeNameLen       Length, in characters, of size name buffer
+ */
+HRESULT WINAPI GetThemeDefaults(LPCWSTR pszThemeFileName, LPWSTR 
pszColorName,
+                                DWORD dwColorNameLen, LPWSTR pszSizeName,
+                                DWORD dwSizeNameLen)
+{
+    FIXME("%s: stub\n", debugstr_w(pszThemeFileName));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/**********************************************************************
+ *      EnumThemes                                         (UXTHEME.8)
+ *
+ * Enumerate available themes, calls specified EnumThemeProc for each
+ * theme found. Passes lpData through to callback function.
+ *
+ * PARAMS
+ *     pszThemePath        Path containing themes
+ *     callback            Called for each theme found in path
+ *     lpData              Passed through to callback
+ */
+HRESULT WINAPI EnumThemes(LPCWSTR pszThemePath, EnumThemeProc callback,
+                          LPVOID lpData)
+{
+    FIXME("%s: stub\n", debugstr_w(pszThemePath));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/**********************************************************************
+ *      EnumThemeColors                                    (UXTHEME.9)
+ *
+ * Enumerate theme colors available with a particular size
+ *
+ * PARAMS
+ *     pszThemeFileName    Path to a msstyles theme file
+ *     pszSizeName         Theme size to enumerate available colors
+ *                         If NULL the default theme size is used
+ *     dwColorNum          Color index to retrieve, increment from 0
+ *     pszColorName        Output color name
+ *
+ * RETURNS
+ *     S_OK on success
+ *     E_PROP_ID_UNSUPPORTED when dwColorName does not refer to a color
+ *          or when pszSizeName does not refer to a valid size
+ *
+ * NOTES
+ * XP fails with E_POINTER when pszColorName points to a buffer smaller then 
605
+ * characters
+ */
+HRESULT WINAPI EnumThemeColors(LPWSTR pszThemeFileName, LPWSTR pszSizeName,
+                               DWORD dwColorNum, LPWSTR pszColorName)
+{
+    FIXME("%s %s %ld: stub\n", debugstr_w(pszThemeFileName),
+          debugstr_w(pszSizeName), dwColorNum);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/**********************************************************************
+ *      EnumThemeSizes                                     (UXTHEME.10)
+ *
+ * Enumerate theme colors available with a particular size
+ *
+ * PARAMS
+ *     pszThemeFileName    Path to a msstyles theme file
+ *     pszColorName        Theme color to enumerate available sizes
+ *                         If NULL the default theme color is used
+ *     dwSizeNum           Size index to retrieve, increment from 0
+ *     pszSizeName         Output size name
+ *
+ * RETURNS
+ *     S_OK on success
+ *     E_PROP_ID_UNSUPPORTED when dwSizeName does not refer to a size
+ *          or when pszColorName does not refer to a valid color
+ *
+ * NOTES
+ * XP fails with E_POINTER when pszSizeName points to a buffer smaller then 
605
+ * characters
+ */
+HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName,
+                              DWORD dwSizeNum, LPWSTR pszSizeName)
+{
+    FIXME("%s %s %ld: stub\n", debugstr_w(pszThemeFileName), 
debugstr_w(pszColorName), dwSizeNum);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/**********************************************************************
+ *      ParseThemeIniFile                                  (UXTHEME.11)
+ *
+ * Enumerate data in a theme INI file.
+ *
+ * PARAMS
+ *     pszIniFileName      Path to a theme ini file
+ *     pszUnknown          Cannot be NULL, L"" is valid
+ *     callback            Called for each found entry
+ *     lpData              Passed through to callback
+ *
+ * RETURNS
+ *     S_OK on success
+ *     0x800706488 (Unknown property) when enumeration is canceled from 
callback
+ *
+ * NOTES
+ * When pszUnknown is NULL the callback is never called, the value does not 
seem to surve
+ * any other purpose
+ */
+HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
+                                 ParseThemeIniFileProc callback, LPVOID 
lpData)
+{
+    FIXME("%s %s: stub\n", debugstr_w(pszIniFileName), 
debugstr_w(pszUnknown));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/draw.c	2003-11-30 01:39:41.000000000 -0500
@@ -0,0 +1,216 @@
+/*
+ * Win32 5.1 Theme drawing
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "uxtheme.h"
+
+#include "uxthemedll.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
+
+/***********************************************************************
+ *      EnableThemeDialogTexture                            (UXTHEME.@)
+ */
+HRESULT WINAPI EnableThemeDialogTexture(HWND hwnd, DWORD dwFlags)
+{
+    FIXME("%p 0x%08lx: stub\n", hwnd, dwFlags);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+ }
+
+/***********************************************************************
+ *      IsThemeDialogTextureEnabled                         (UXTHEME.@)
+ */
+BOOL WINAPI IsThemeDialogTextureEnabled(void)
+{
+    FIXME("stub\n");
+    return FALSE;
+}
+
+/***********************************************************************
+ *      DrawThemeParentBackground                           (UXTHEME.@)
+ */
+HRESULT WINAPI DrawThemeParentBackground(HWND hwnd, HDC hdc, RECT *prc)
+{
+    FIXME("stub\n");
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      DrawThemeBackground                                 (UXTHEME.@)
+ */
+HRESULT WINAPI DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId,
+                                   int iStateId, const RECT *pRect,
+                                   const RECT *pClipRect)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      DrawThemeBackgroundEx                               (UXTHEME.@)
+ */
+HRESULT WINAPI DrawThemeBackgroundEx(HTHEME hTheme, HDC hdc, int iPartId,
+                                     int iStateId, const RECT *pRect,
+                                     const DTBGOPTS *pOptions)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      DrawThemeEdge                                       (UXTHEME.@)
+ */
+HRESULT WINAPI DrawThemeEdge(HTHEME hTheme, HDC hdc, int iPartId,
+                             int iStateId, const RECT *pDestRect, UINT uEdge,
+                             UINT uFlags, RECT *pContentRect)
+{
+    FIXME("%d %d 0x%08x 0x%08x: stub\n", iPartId, iStateId, uEdge, uFlags);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      DrawThemeIcon                                       (UXTHEME.@)
+ */
+HRESULT WINAPI DrawThemeIcon(HTHEME hTheme, HDC hdc, int iPartId, int 
iStateId,
+                             const RECT *pRect, HIMAGELIST himl, int 
iImageIndex)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      DrawThemeText                                       (UXTHEME.@)
+ */
+HRESULT WINAPI DrawThemeText(HTHEME hTheme, HDC hdc, int iPartId, int 
iStateId,
+                             LPCWSTR pszText, int iCharCount, DWORD 
dwTextFlags,
+                             DWORD dwTextFlags2, const RECT *pRect)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeBackgroundContentRect                       (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeBackgroundContentRect(HTHEME hTheme, HDC hdc, int 
iPartId,
+                                             int iStateId,
+                                             const RECT *pBoundingRect,
+                                             RECT *pContentRect)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeBackgroundExtent                            (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeBackgroundExtent(HTHEME hTheme, HDC hdc, int iPartId,
+                                        int iStateId, const RECT 
*pContentRect,
+                                        RECT *pExtentRect)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeBackgroundRegion                            (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeBackgroundRegion(HTHEME hTheme, HDC hdc, int iPartId,
+                                        int iStateId, const RECT *pRect,
+                                        HRGN *pRegion)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemePartSize                                    (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemePartSize(HTHEME hTheme, HDC hdc, int iPartId,
+                                int iStateId, RECT *prc, THEMESIZE eSize,
+                                SIZE *psz)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, eSize);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/***********************************************************************
+ *      GetThemeTextExtent                                  (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeTextExtent(HTHEME hTheme, HDC hdc, int iPartId,
+                                  int iStateId, LPCWSTR pszText, int 
iCharCount,
+                                  DWORD dwTextFlags, const RECT 
*pBoundingRect,
+                                  RECT *pExtentRect)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeTextMetrics                                 (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeTextMetrics(HTHEME hTheme, HDC hdc, int iPartId,
+                                   int iStateId, TEXTMETRICW *ptm)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      IsThemeBackgroundPartiallyTransparent               (UXTHEME.@)
+ */
+BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME hTheme, int iPartId,
+                                                  int iStateId)
+{
+    FIXME("%d %d: stub\n", iPartId, iStateId);
+    return FALSE;
+}
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/metric.c	2003-11-30 01:39:46.000000000 -0500
@@ -0,0 +1,105 @@
+/*
+ * Win32 5.1 Theme metrics
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "uxtheme.h"
+
+#include "uxthemedll.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
+
+/***********************************************************************
+ *      GetThemeSysBool                                     (UXTHEME.@)
+ */
+BOOL WINAPI GetThemeSysBool(HTHEME hTheme, int iBoolID)
+{
+    FIXME("%d: stub\n", iBoolID);
+    return FALSE;
+}
+
+/***********************************************************************
+ *      GetThemeSysColor                                    (UXTHEME.@)
+ */
+COLORREF WINAPI GetThemeSysColor(HTHEME hTheme, int iColorID)
+{
+    FIXME("%d: stub\n", iColorID);
+    return FALSE;
+}
+
+/***********************************************************************
+ *      GetThemeSysColorBrush                               (UXTHEME.@)
+ */
+HBRUSH WINAPI GetThemeSysColorBrush(HTHEME hTheme, int iColorID)
+{
+    FIXME("%d: stub\n", iColorID);
+    return FALSE;
+}
+
+/***********************************************************************
+ *      GetThemeSysFont                                     (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeSysFont(HTHEME hTheme, int iFontID, LOGFONTW *plf)
+{
+    FIXME("%d: stub\n", iFontID);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeSysInt                                      (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeSysInt(HTHEME hTheme, int iIntID, int *piValue)
+{
+    FIXME("%d: stub\n", iIntID);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeSysSize                                     (UXTHEME.@)
+ */
+int WINAPI GetThemeSysSize(HTHEME hTheme, int iSizeID)
+{
+    FIXME("%d: stub\n", iSizeID);
+    return 0;
+}
+
+/***********************************************************************
+ *      GetThemeSysString                                   (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeSysString(HTHEME hTheme, int iStringID,
+                                 LPWSTR pszStringBuff, int cchMaxStringChars)
+{
+    FIXME("%d: stub\n", iStringID);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/property.c	2003-11-30 01:39:56.000000000 -0500
@@ -0,0 +1,205 @@
+/*
+ * Win32 5.1 Theme properties
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "wingdi.h"
+#include "uxtheme.h"
+
+#include "uxthemedll.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
+
+/***********************************************************************
+ *      GetThemeDocumentationProperty                       (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR pszThemeName,
+                                             LPCWSTR pszPropertyName,
+                                              LPWSTR pszValueBuff,
+                                              int cchMaxValChars)
+{
+    FIXME("%s %s: stub\n", debugstr_w(pszThemeName), 
debugstr_w(pszPropertyName));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeBool                                        (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeBool(HTHEME hTheme, int iPartId, int iStateId,
+                            int iPropId, BOOL *pfVal)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeColor                                       (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeColor(HTHEME hTheme, int iPartId, int iStateId,
+                             int iPropId, COLORREF *pColor)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeEnumValue                                   (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeEnumValue(HTHEME hTheme, int iPartId, int iStateId,
+                                 int iPropId, int *piVal)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeFilename                                    (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeFilename(HTHEME hTheme, int iPartId, int iStateId,
+                                int iPropId, LPWSTR pszThemeFilename,
+                                int cchMaxBuffChars)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeFont                                        (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeFont(HTHEME hTheme, HDC hdc, int iPartId,
+                            int iStateId, int iPropId, LOGFONTW *pFont)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeInt                                         (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeInt(HTHEME hTheme, int iPartId, int iStateId,
+                           int iPropId, int *piVal)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeIntList                                     (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeIntList(HTHEME hTheme, int iPartId, int iStateId,
+                               int iPropId, INTLIST *pIntList)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemePosition                                    (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemePosition(HTHEME hTheme, int iPartId, int iStateId,
+                                int iPropId, POINT *pPoint)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeRect                                        (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeRect(HTHEME hTheme, int iPartId, int iStateId,
+                            int iPropId, RECT *pRect)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeString                                      (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeString(HTHEME hTheme, int iPartId, int iStateId,
+                              int iPropId, LPWSTR pszBuff, int 
cchMaxBuffChars)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeMargins                                     (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeMargins(HTHEME hTheme, HDC hdc, int iPartId,
+                               int iStateId, int iPropId, RECT *prc,
+                               MARGINS *pMargins)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemeMetric                                      (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemeMetric(HTHEME hTheme, HDC hdc, int iPartId,
+                              int iStateId, int iPropId, int *piVal)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *      GetThemePropertyOrigin                              (UXTHEME.@)
+ */
+HRESULT WINAPI GetThemePropertyOrigin(HTHEME hTheme, int iPartId, int 
iStateId,
+                                      int iPropId, PROPERTYORIGIN *pOrigin)
+{
+    FIXME("%d %d %d: stub\n", iPartId, iStateId, iPropId);
+    if(!hTheme)
+        return E_HANDLE;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/uxthemedll.h	2003-11-30 22:29:29.000000000 -0500
@@ -0,0 +1,88 @@
+/*
+ * Internal uxtheme defines & declarations
+ *
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __WINE_UXTHEMEDLL_H
+#define __WINE_UXTHEMEDLL_H
+
+typedef HANDLE HTHEMEFILE;
+
+/**********************************************************************
+ *              EnumThemeProc
+ *
+ * Callback function for EnumThemes.
+ *
+ * RETURNS
+ *     TRUE to continue enumeration, FALSE to stop
+ *
+ * PARAMS
+ *     lpReserved          Always 0
+ *     pszThemeFileName    Full path to theme msstyles file
+ *     pszThemeName        Display name for theme
+ *     pszToolTip          Tooltip name for theme
+ *     lpReserved2         Always 0
+ *     lpData              Value passed through lpData from EnumThemes
+ */
+typedef BOOL (CALLBACK *EnumThemeProc)(LPVOID lpReserved, LPCWSTR 
pszThemeFileName,
+                                       LPCWSTR pszThemeName, LPCWSTR 
pszToolTip, LPVOID lpReserved2,
+                                       LPVOID lpData);
+
+/**********************************************************************
+ *              ParseThemeIniFileProc
+ *
+ * Callback function for ParseThemeIniFile.
+ *
+ * RETURNS
+ *     TRUE to continue enumeration, FALSE to stop
+ *
+ * PARAMS
+ *     dwType              Entry type
+ *     pszParam1           Use defined by entry type
+ *     pszParam2           Use defined by entry type
+ *     pszParam3           Use defined by entry type
+ *     dwParam             Use defined by entry type
+ *     lpData              Value passed through lpData from ParseThemeIniFile
+ *
+ * NOTES
+ * I dont know what the valid entry types are
+ */
+typedef BOOL (CALLBACK*ParseThemeIniFileProc)(DWORD dwType, LPWSTR pszParam1,
+                                              LPWSTR pszParam2, LPWSTR 
pszParam3,
+                                              DWORD dwParam, LPVOID lpData);
+
+/* Declarations for undocumented functions for use internally */
+DWORD WINAPI QueryThemeServices();
+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, LPWSTR pszColorName);
+HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName,
+                              DWORD dwSizeNum, LPWSTR pszSizeName);
+HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
+                                 ParseThemeIniFileProc callback, LPVOID 
lpData);
+
+#endif
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ dlls/uxtheme/version.rc	2003-11-30 23:29:48.000000000 -0500
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2003 Kevin Koltzau
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#define WINE_FILENAME_STR "uxtheme.dll"
+
+#include <wine/wine_common_ver.rc>




More information about the wine-patches mailing list