Re: uxtheme: basic implementation of all functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That seems to have gotten word wrapped, here it is again

On Monday 01 December 2003 12:01 am, Kevin Koltzau wrote:
> 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>

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux