Initial implementation of uxtheme.dll, mostly stubbed out for now.

This commit is contained in:
Kevin Koltzau 2003-10-04 03:48:11 +00:00 committed by Alexandre Julliard
parent 5e3549bf3b
commit 0af4fb9e6d
9 changed files with 322 additions and 1 deletions

3
configure vendored

File diff suppressed because one or more lines are too long

View File

@ -1507,6 +1507,7 @@ dlls/urlmon/Makefile
dlls/urlmon/tests/Makefile
dlls/user/Makefile
dlls/user/tests/Makefile
dlls/uxtheme/Makefile
dlls/version/Makefile
dlls/win32s/Makefile
dlls/winaspi/Makefile

View File

@ -99,6 +99,7 @@ BASEDIRS = \
url \
urlmon \
user \
uxtheme \
version \
win32s \
winaspi \
@ -290,6 +291,7 @@ SYMLINKS = \
url.dll$(DLLEXT) \
urlmon.dll$(DLLEXT) \
user32.dll$(DLLEXT) \
uxtheme.dll$(DLLEXT) \
version.dll$(DLLEXT) \
w32skrnl.dll$(DLLEXT) \
winealsa.drv$(DLLEXT) \
@ -615,6 +617,9 @@ user32.dll$(DLLEXT) ddeml.dll$(DLLEXT) display.drv$(DLLEXT) \
keyboard.drv$(DLLEXT) mouse.drv$(DLLEXT) user.exe$(DLLEXT): user/user32.dll$(DLLEXT)
$(RM) $@ && $(LN_S) user/user32.dll$(DLLEXT) $@
uxtheme.dll$(DLLEXT): uxtheme/uxtheme.dll$(DLLEXT)
$(RM) $@ && $(LN_S) uxtheme/uxtheme.dll$(DLLEXT) $@
version.dll$(DLLEXT) ver.dll$(DLLEXT): version/version.dll$(DLLEXT)
$(RM) $@ && $(LN_S) version/version.dll$(DLLEXT) $@
@ -770,6 +775,7 @@ IMPORT_LIBS = \
liburl \
liburlmon \
libuser32 \
libuxtheme \
libversion \
libw32skrnl \
libwinedos \
@ -1211,6 +1217,11 @@ libuser32.def: user/user32.spec.def
libuser32.a: user/user32.spec.def
$(DLLTOOL) -k -l $@ -d user/user32.spec.def
libuxtheme.def: uxtheme/uxtheme.spec.def
$(RM) $@ && $(LN_S) uxtheme/uxtheme.spec.def $@
libuxtheme.a: uxtheme/uxtheme.spec.def
$(DLLTOOL) -k -l $@ -d uxtheme/uxtheme.spec.def
libversion.def: version/version.spec.def
$(RM) $@ && $(LN_S) version/version.spec.def $@
libversion.a: version/version.spec.def
@ -1371,6 +1382,7 @@ twain/twain_32.spec.def: $(WINEBUILD)
url/url.spec.def: $(WINEBUILD)
urlmon/urlmon.spec.def: $(WINEBUILD)
user/user32.spec.def: $(WINEBUILD)
uxtheme/uxtheme.spec.def: $(WINEBUILD)
version/version.spec.def: $(WINEBUILD)
win32s/w32skrnl.spec.def: $(WINEBUILD)
winedos/winedos.spec.def: $(WINEBUILD)
@ -1490,6 +1502,7 @@ twain/twain_32.dll$(DLLEXT): twain
url/url.dll$(DLLEXT): url
urlmon/urlmon.dll$(DLLEXT): urlmon
user/user32.dll$(DLLEXT): user
uxtheme/uxtheme.dll$(DLLEXT): uxtheme
version/version.dll$(DLLEXT): version
win32s/w32skrnl.dll$(DLLEXT): win32s
winmm/winealsa/winealsa.drv$(DLLEXT): winmm/winealsa

4
dlls/uxtheme/.cvsignore Normal file
View File

@ -0,0 +1,4 @@
Makefile
uxtheme.dll.dbg.c
uxtheme.spec.c
uxtheme.spec.def

17
dlls/uxtheme/Makefile.in Normal file
View File

@ -0,0 +1,17 @@
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = uxtheme.dll
IMPORTS = gdi32 user32 advapi32 kernel32 ntdll
EXTRALIBS = $(LIBUNICODE)
LDDLLFLAGS = @LDDLLFLAGS@
SYMBOLFILE = $(MODULE).tmp.o
C_SRCS = \
main.c
@MAKE_DLL_RULES@
### Dependencies:

80
dlls/uxtheme/main.c Normal file
View File

@ -0,0 +1,80 @@
/*
* Win32 5.1 Themes
*
* 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 "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
/* For the moment, do nothing here. */
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
{
switch(fdwReason) {
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hInstDLL);
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;
}

48
dlls/uxtheme/uxtheme.spec Normal file
View File

@ -0,0 +1,48 @@
@ stub CloseThemeData
@ stub DrawThemeBackground
@ stub DrawThemeBackgroundEx
@ stub DrawThemeEdge
@ stub DrawThemeIcon
@ stub DrawThemeParentBackground
@ stub DrawThemeText
@ 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 IsAppThemed()
@ stdcall IsThemeActive()
@ stub IsThemeBackgroundPartiallyTransparent
@ stub IsThemeDialogTextureEnabled
@ stub IsThemePartDefined
@ stdcall OpenThemeData(ptr wstr)
@ stub SetThemeAppProperties
@ stdcall SetWindowTheme(ptr wstr wstr)

View File

@ -167,6 +167,7 @@ WINDOWS_INCLUDES = \
tlhelp32.h \
tmschema.h \
uuids.h \
uxtheme.h \
ver.h \
vfw.h \
vfwmsgs.h \

156
include/uxtheme.h Normal file
View File

@ -0,0 +1,156 @@
/*
* Win32 5.1 theme definitions
*
* 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_UXTHEME_H
#define __WINE_UXTHEME_H
#include <commctrl.h>
typedef HANDLE HTHEME;
HRESULT WINAPI CloseThemeData(HTHEME hTheme);
HRESULT WINAPI DrawThemeBackground(HTHEME,HDC,int,int,const RECT*,const RECT*);
typedef struct _DTBGOPTS {
DWORD dwSize;
DWORD dwFlags;
RECT rcClip;
} DTBGOPTS, *PDTBGOPTS;
HRESULT WINAPI DrawThemeBackgroundEx(HTHEME,HDC,int,int,const RECT*,
const DTBGOPTS*);
HRESULT WINAPI DrawThemeEdge(HTHEME,HDC,int,int,const RECT*,UINT,UINT,
RECT*);
HRESULT WINAPI DrawThemeIcon(HTHEME,HDC,int,int,const RECT*,HIMAGELIST,int);
HRESULT WINAPI DrawThemeParentBackground(HWND,HDC,RECT*);
#define DTT_GRAYED 0x1
HRESULT WINAPI DrawThemeText(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,DWORD,
const RECT*);
#define ETDT_DISABLE 0x00000001
#define ETDT_ENABLE 0x00000002
#define ETDT_USETABTEXTURE 0x00000004
#define ETDT_ENABLETAB (ETDT_ENABLE|ETDT_USETABTEXTURE)
HRESULT WINAPI EnableThemeDialogTexture(HWND,DWORD);
HRESULT WINAPI EnableTheming(BOOL);
HRESULT WINAPI GetCurrentThemeName(LPWSTR,int,LPWSTR,int,LPWSTR,int);
#define STAP_ALLOW_NONCLIENT (1<<0)
#define STAP_ALLOW_CONTROLS (1<<1)
#define STAP_ALLOW_WEBCONTENT (1<<2)
DWORD WINAPI GetThemeAppProperties();
HRESULT WINAPI GetThemeBackgroundContentRect(HTHEME,HDC,int,int,
const RECT*,RECT*);
HRESULT WINAPI GetThemeBackgroundExtent(HTHEME,HDC,int,int,const RECT*,RECT*);
HRESULT WINAPI GetThemeBackgroundRegion(HTHEME,HDC,int,int,const RECT*,HRGN*);
HRESULT WINAPI GetThemeBool(HTHEME,int,int,int,BOOL*);
HRESULT WINAPI GetThemeColor(HTHEME,int,int,int,COLORREF*);
#define SZ_THDOCPROP_DISPLAYNAME L"DisplayName"
#define SZ_THDOCPROP_CANONICALNAME L"ThemeName"
#define SZ_THDOCPROP_TOOLTIP L"ToolTip"
#define SZ_THDOCPROP_AUTHOR L"author"
HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR,LPCWSTR,LPWSTR,int);
HRESULT WINAPI GetThemeEnumValue(HTHEME,int,int,int,int*);
HRESULT WINAPI GetThemeFilename(HTHEME,int,int,int,LPWSTR,int);
HRESULT WINAPI GetThemeFont(HTHEME,HDC,int,int,int,LOGFONTW*);
HRESULT WINAPI GetThemeInt(HTHEME,int,int,int,int*);
#define MAX_INTLIST_COUNT 10
typedef struct _INTLIST {
int iValueCount;
int iValues[MAX_INTLIST_COUNT];
} INTLIST, *PINTLIST;
HRESULT WINAPI GetThemeIntList(HTHEME,int,int,int,INTLIST*);
typedef struct _MARGINS {
int cxLeftWidth;
int cxRightWidth;
int cyTopHeight;
int cyBottomHeight;
} MARGINS, *PMARGINS;
HRESULT WINAPI GetThemeMargins(HTHEME,HDC,int,int,int,RECT*,MARGINS*);
HRESULT WINAPI GetThemeMetric(HTHEME,HDC,int,int,int,int*);
typedef enum {
TS_MIN,
TS_TRUE,
TS_DRAW
} THEMESIZE;
HRESULT WINAPI GetThemePartSize(HTHEME,HDC,int,int,RECT*,THEMESIZE,SIZE*);
HRESULT WINAPI GetThemePosition(HTHEME,int,int,int,POINT*);
typedef enum {
PO_STATE,
PO_PART,
PO_CLASS,
PO_GLOBAL,
PO_NOTFOUND
} PROPERTYORIGIN;
HRESULT WINAPI GetThemePropertyOrigin(HTHEME,int,int,int,PROPERTYORIGIN*);
HRESULT WINAPI GetThemeRect(HTHEME,int,int,int,RECT*);
HRESULT WINAPI GetThemeString(HTHEME,int,int,int,LPWSTR,int);
BOOL WINAPI GetThemeSysBool(HTHEME,int);
COLORREF WINAPI GetThemeSysColor(HTHEME,int);
HBRUSH WINAPI GetThemeSysColorBrush(HTHEME,int);
HRESULT WINAPI GetThemeSysFont(HTHEME,int,LOGFONTW*);
HRESULT WINAPI GetThemeSysInt(HTHEME,int,int*);
int WINAPI GetThemeSysSize(HTHEME,int);
HRESULT WINAPI GetThemeSysString(HTHEME,int,LPWSTR,int);
HRESULT WINAPI GetThemeTextExtent(HTHEME,HDC,int,int,LPCWSTR,int,DWORD,
const RECT*,RECT*);
HRESULT WINAPI GetThemeTextMetrics(HTHEME,HDC,int,int,TEXTMETRICW*);
HTHEME WINAPI GetWindowTheme(HWND);
#define HTTB_BACKGROUNDSEG 0x0000
#define HTTB_FIXEDBORDER 0x0002
#define HTTB_CAPTION 0x0004
#define HTTB_RESIZINGBORDER_LEFT 0x0010
#define HTTB_RESIZINGBORDER_TOP 0x0020
#define HTTB_RESIZINGBORDER_RIGHT 0x0040
#define HTTB_RESIZINGBORDER_BOTTOM 0x0080
#define HTTB_RESIZINGBORDER \
(HTTB_RESIZINGBORDER_LEFT|HTTB_RESIZINGBORDER_TOP|\
HTTB_RESIZINGBORDER_RIGHT|HTTB_RESIZINGBORDER_BOTTOM)
#define HTTB_SIZINGTEMPLATE 0x0100
#define HTTB_SYSTEMSIZINGMARGINS 0x0200
HRESULT WINAPI HitTestThemeBackground(HTHEME,HDC,int,int,DWORD,const RECT*,
HRGN,POINT,WORD*);
BOOL WINAPI IsAppThemed();
BOOL WINAPI IsThemeActive();
BOOL WINAPI IsThemeBackgroundPartiallyTransparent(HTHEME,int,int);
BOOL WINAPI IsThemeDialogTextureEnabled();
BOOL WINAPI IsThemePartDefined(HTHEME,int,int);
HTHEME WINAPI OpenThemeData(HWND,LPCWSTR);
void WINAPI SetThemeAppProperties(DWORD);
HRESULT WINAPI SetWindowTheme(HWND,LPCWSTR,LPCWSTR);
#endif