mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 09:50:02 +00:00
Minimal UxTheme skeleton (includes Borland C++ Builder project for my own sanity)
svn path=/trunk/; revision=6424
This commit is contained in:
parent
37296302c4
commit
cda5a1a107
10 changed files with 779 additions and 0 deletions
13
reactos/lib/uxtheme/.cvsignore
Normal file
13
reactos/lib/uxtheme/.cvsignore
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
*.coff
|
||||||
|
*.dll
|
||||||
|
*.d
|
||||||
|
*.a
|
||||||
|
*.o
|
||||||
|
*.sym
|
||||||
|
*.map
|
||||||
|
*.tmp
|
||||||
|
*.~*
|
||||||
|
*.il?
|
||||||
|
*.res
|
||||||
|
*.tds
|
||||||
|
*.lib
|
12
reactos/lib/uxtheme/include/nostyle/button.h
Normal file
12
reactos/lib/uxtheme/include/nostyle/button.h
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#ifndef UXTHEME_BUTTON_H__
|
||||||
|
#define UXTHEME_BUTTON_H__
|
||||||
|
|
||||||
|
#include "uxthemedll.h"
|
||||||
|
|
||||||
|
extern const UXTHEME_VTABLE Button_Vt;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* EOF */
|
29
reactos/lib/uxtheme/makefile
Normal file
29
reactos/lib/uxtheme/makefile
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
# $Id: makefile,v 1.1 2003/10/24 21:29:48 hyperion Exp $
|
||||||
|
|
||||||
|
PATH_TO_TOP = ../..
|
||||||
|
|
||||||
|
TARGET_TYPE = dynlink
|
||||||
|
|
||||||
|
TARGET_NAME = uxtheme
|
||||||
|
|
||||||
|
TARGET_SDKLIBS = kernel32.a user32.a gdi32.a
|
||||||
|
|
||||||
|
TARGET_CFLAGS = -Wall -Werror -D_DISABLE_TIDENTS
|
||||||
|
|
||||||
|
TARGET_LFLAGS = -nostartfiles -nostdlib
|
||||||
|
|
||||||
|
TARGET_BASE = 0x5B180000
|
||||||
|
|
||||||
|
TARGET_OBJECTS = \
|
||||||
|
uxthemedll.o \
|
||||||
|
button.o
|
||||||
|
|
||||||
|
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||||
|
|
||||||
|
include $(PATH_TO_TOP)/rules.mak
|
||||||
|
|
||||||
|
include $(TOOLS_PATH)/helper.mk
|
||||||
|
|
||||||
|
include $(TOOLS_PATH)/depend.mk
|
||||||
|
|
||||||
|
# EOF
|
5
reactos/lib/uxtheme/nostyle/.cvsignore
Normal file
5
reactos/lib/uxtheme/nostyle/.cvsignore
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
*.d
|
||||||
|
*.a
|
||||||
|
*.o
|
||||||
|
*.sym
|
||||||
|
*.obj
|
193
reactos/lib/uxtheme/nostyle/button.c
Normal file
193
reactos/lib/uxtheme/nostyle/button.c
Normal file
|
@ -0,0 +1,193 @@
|
||||||
|
#include "uxthemedll.h"
|
||||||
|
#include "nostyle/button.h"
|
||||||
|
|
||||||
|
/* Functions */
|
||||||
|
STDAPI Button_DrawBackground
|
||||||
|
(
|
||||||
|
struct UXTHEME_DATA_ * pData,
|
||||||
|
HDC hdc,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId,
|
||||||
|
const RECT * pRect,
|
||||||
|
const RECT * pClipRect
|
||||||
|
);
|
||||||
|
|
||||||
|
STDAPI_(BOOL) Button_IsPartDefined
|
||||||
|
(
|
||||||
|
struct UXTHEME_DATA_ * pData,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId
|
||||||
|
);
|
||||||
|
|
||||||
|
const UXTHEME_VTABLE Button_Vt =
|
||||||
|
{
|
||||||
|
Button_DrawBackground
|
||||||
|
};
|
||||||
|
|
||||||
|
/* BP_PUSHBUTTON */
|
||||||
|
static const UINT Button_PushButton_State[] =
|
||||||
|
{
|
||||||
|
DFCS_BUTTONPUSH, /* PBS_NORMAL */
|
||||||
|
DFCS_BUTTONPUSH | DFCS_HOT, /* PBS_HOT */
|
||||||
|
DFCS_BUTTONPUSH | DFCS_PUSHED, /* PBS_PRESSED */
|
||||||
|
DFCS_BUTTONPUSH | DFCS_INACTIVE /* PBS_DISABLED */
|
||||||
|
/* TODO */ /* PBS_DEFAULTED */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* BP_RADIOBUTTON */ /* FIXME: not sure about DrawFrameControl with radios */
|
||||||
|
static const UINT Button_RadioButton_State[] =
|
||||||
|
{
|
||||||
|
DFCS_BUTTONRADIO, /* RBS_UNCHECKEDNORMAL */
|
||||||
|
DFCS_BUTTONRADIO | DFCS_HOT, /* RBS_UNCHECKEDHOT */
|
||||||
|
DFCS_BUTTONRADIO | DFCS_PUSHED, /* RBS_UNCHECKEDPRESSED */
|
||||||
|
DFCS_BUTTONRADIO | DFCS_INACTIVE, /* RBS_UNCHECKEDDISABLED */
|
||||||
|
DFCS_BUTTONRADIO | DFCS_CHECKED, /* RBS_CHECKEDNORMAL */
|
||||||
|
DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_HOT, /* RBS_CHECKEDHOT */
|
||||||
|
DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_PUSHED, /* RBS_CHECKEDPRESSED */
|
||||||
|
DFCS_BUTTONRADIO | DFCS_CHECKED | DFCS_INACTIVE /* RBS_CHECKEDDISABLED */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* BP_CHECKBOX */ /* FIXME: not sure about DrawFrameControl with checkboxes */
|
||||||
|
static const UINT Button_CheckBox_State[] =
|
||||||
|
{
|
||||||
|
DFCS_BUTTONCHECK, /* CBS_UNCHECKEDNORMAL */
|
||||||
|
DFCS_BUTTONCHECK | DFCS_HOT, /* CBS_UNCHECKEDHOT */
|
||||||
|
DFCS_BUTTONCHECK | DFCS_PUSHED, /* CBS_UNCHECKEDPRESSED */
|
||||||
|
DFCS_BUTTONCHECK | DFCS_INACTIVE, /* CBS_UNCHECKEDDISABLED */
|
||||||
|
DFCS_BUTTONCHECK | DFCS_CHECKED, /* CBS_CHECKEDNORMAL */
|
||||||
|
DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_HOT, /* CBS_CHECKEDHOT */
|
||||||
|
DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_PUSHED, /* CBS_CHECKEDPRESSED */
|
||||||
|
DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_INACTIVE /* CBS_CHECKEDDISABLED */
|
||||||
|
/* TODO */ /* CBS_MIXEDNORMAL */
|
||||||
|
/* TODO */ /* CBS_MIXEDHOT */
|
||||||
|
/* TODO */ /* CBS_MIXEDPRESSED */
|
||||||
|
/* TODO */ /* CBS_MIXEDDISABLED */
|
||||||
|
};
|
||||||
|
|
||||||
|
static UINT const * Button_Part_State[] =
|
||||||
|
{
|
||||||
|
Button_PushButton_State,
|
||||||
|
Button_RadioButton_State,
|
||||||
|
Button_CheckBox_State
|
||||||
|
/* TODO: group box */
|
||||||
|
};
|
||||||
|
|
||||||
|
STDAPI Button_DrawBackground
|
||||||
|
(
|
||||||
|
struct UXTHEME_DATA_ * pData,
|
||||||
|
HDC hdc,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId,
|
||||||
|
const RECT * pRect,
|
||||||
|
const RECT * pClipRect
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UINT uState = 0;
|
||||||
|
HRGN hrgnSave;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
if(!Button_IsPartDefined(pData, iPartId, iStateId)) return E_FAIL;
|
||||||
|
|
||||||
|
uState = Button_Part_State[iPartId - 1][iStateId - 1];
|
||||||
|
|
||||||
|
if(pClipRect && FAILED(hres = UxTheme_ClipDc(hdc, pClipRect, &hrgnSave)))
|
||||||
|
return hres;
|
||||||
|
|
||||||
|
if(!DrawFrameControl(hdc, (LPRECT)pRect, DFC_BUTTON, uState))
|
||||||
|
hres = HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
|
||||||
|
if(pClipRect) UxTheme_UnclipDc(hdc, hrgnSave);
|
||||||
|
|
||||||
|
return hres;
|
||||||
|
}
|
||||||
|
|
||||||
|
STDAPI_(BOOL) Button_IsPartDefined
|
||||||
|
(
|
||||||
|
struct UXTHEME_DATA_ * pData,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId
|
||||||
|
)
|
||||||
|
{
|
||||||
|
switch(iPartId)
|
||||||
|
{
|
||||||
|
case BP_PUSHBUTTON:
|
||||||
|
switch(iStateId)
|
||||||
|
{
|
||||||
|
case PBS_NORMAL:
|
||||||
|
case PBS_HOT:
|
||||||
|
case PBS_PRESSED:
|
||||||
|
case PBS_DISABLED:
|
||||||
|
case PBS_DEFAULTED:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BP_RADIOBUTTON:
|
||||||
|
switch(iStateId)
|
||||||
|
{
|
||||||
|
case RBS_UNCHECKEDNORMAL:
|
||||||
|
case RBS_UNCHECKEDHOT:
|
||||||
|
case RBS_UNCHECKEDPRESSED:
|
||||||
|
case RBS_UNCHECKEDDISABLED:
|
||||||
|
case RBS_CHECKEDNORMAL:
|
||||||
|
case RBS_CHECKEDHOT:
|
||||||
|
case RBS_CHECKEDPRESSED:
|
||||||
|
case RBS_CHECKEDDISABLED:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BP_CHECKBOX:
|
||||||
|
switch(iStateId)
|
||||||
|
{
|
||||||
|
case CBS_UNCHECKEDNORMAL:
|
||||||
|
case CBS_UNCHECKEDHOT:
|
||||||
|
case CBS_UNCHECKEDPRESSED:
|
||||||
|
case CBS_UNCHECKEDDISABLED:
|
||||||
|
case CBS_CHECKEDNORMAL:
|
||||||
|
case CBS_CHECKEDHOT:
|
||||||
|
case CBS_CHECKEDPRESSED:
|
||||||
|
case CBS_CHECKEDDISABLED:
|
||||||
|
case CBS_MIXEDNORMAL:
|
||||||
|
case CBS_MIXEDHOT:
|
||||||
|
case CBS_MIXEDPRESSED:
|
||||||
|
case CBS_MIXEDDISABLED:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BP_GROUPBOX:
|
||||||
|
switch(iStateId)
|
||||||
|
{
|
||||||
|
case GBS_NORMAL:
|
||||||
|
case GBS_DISABLED:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BP_USERBUTTON:
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
124
reactos/lib/uxtheme/uxtheme.bpr
Normal file
124
reactos/lib/uxtheme/uxtheme.bpr
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8' ?>
|
||||||
|
<!-- C++Builder XML Project -->
|
||||||
|
<PROJECT>
|
||||||
|
<MACROS>
|
||||||
|
<VERSION value="BCB.06.00"/>
|
||||||
|
<PROJECT value="uxtheme.dll"/>
|
||||||
|
<OBJFILES value="uxthemedll.obj nostyle\button.obj"/>
|
||||||
|
<RESFILES value="uxtheme.res"/>
|
||||||
|
<IDLFILES value=""/>
|
||||||
|
<IDLGENFILES value=""/>
|
||||||
|
<DEFFILE value="uxtheme.def"/>
|
||||||
|
<RESDEPEN value="$(RESFILES)"/>
|
||||||
|
<LIBFILES value=""/>
|
||||||
|
<LIBRARIES value=""/>
|
||||||
|
<SPARELIBS value="rtl.lib"/>
|
||||||
|
<PACKAGES value="vcl.bpi rtl.bpi dbrtl.bpi adortl.bpi vcldb.bpi vclx.bpi bdertl.bpi
|
||||||
|
ibxpress.bpi cds.bpi dsnap.bpi bdecds.bpi qrpt.bpi teeui.bpi teedb.bpi
|
||||||
|
tee.bpi vcldbx.bpi dss.bpi teeqr.bpi visualclx.bpi visualdbclx.bpi
|
||||||
|
dsnapcrba.bpi dsnapcon.bpi bcbsmp.bpi dbexpress.bpi dbxcds.bpi indy.bpi"/>
|
||||||
|
<PATHCPP value=".;nostyle"/>
|
||||||
|
<PATHPAS value=".;"/>
|
||||||
|
<PATHRC value=".;"/>
|
||||||
|
<PATHASM value=".;"/>
|
||||||
|
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||||
|
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||||
|
<LINKER value="ilink32"/>
|
||||||
|
<USERDEFINES value="_DEBUG;"/>
|
||||||
|
<SYSDEFINES value="NO_STRICT;_NO_VCL;USEPACKAGES"/>
|
||||||
|
<MAINSOURCE value="uxthemedll.c"/>
|
||||||
|
<INCLUDEPATH value="nostyle;.\include;$(BCB)\include;$(BCB)\include\vcl;..\..\include"/>
|
||||||
|
<LIBPATH value="nostyle;$(BCB)\Projects\Lib;uxtheme;$(BCB)\lib\obj;$(BCB)\lib"/>
|
||||||
|
<WARNINGS value="-w-par"/>
|
||||||
|
<OTHERFILES value=""/>
|
||||||
|
</MACROS>
|
||||||
|
<OPTIONS>
|
||||||
|
<IDLCFLAGS value="-Inostyle -I.\include -I$(BCB)\include -I$(BCB)\include\vcl
|
||||||
|
-I..\..\include -src_suffix cpp -D_DEBUG -boa"/>
|
||||||
|
<CFLAG1 value="-WD -Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi-
|
||||||
|
-tWD -tWM -c"/>
|
||||||
|
<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M"/>
|
||||||
|
<RFLAGS value=""/>
|
||||||
|
<AFLAGS value="/mx /w2 /zd"/>
|
||||||
|
<LFLAGS value="-D"" -aa -Tpd -x -Gi -v"/>
|
||||||
|
<OTHERFILES value=""/>
|
||||||
|
</OPTIONS>
|
||||||
|
<LINKER>
|
||||||
|
<ALLOBJ value="c0d32.obj $(PACKAGES) $(OBJFILES)"/>
|
||||||
|
<ALLRES value="$(RESFILES)"/>
|
||||||
|
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cw32mt.lib"/>
|
||||||
|
<OTHERFILES value=""/>
|
||||||
|
</LINKER>
|
||||||
|
<FILELIST>
|
||||||
|
<FILE FILENAME="uxthemedll.c" FORMNAME="" UNITNAME="uxthemedll" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
|
||||||
|
<FILE FILENAME="nostyle\button.c" FORMNAME="" UNITNAME="button" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
|
||||||
|
<FILE FILENAME="uxtheme.rc" FORMNAME="" UNITNAME="uxtheme.rc" CONTAINERID="RCCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
|
||||||
|
<FILE FILENAME="uxtheme.def" FORMNAME="" UNITNAME="uxtheme.def" CONTAINERID="DefTool" DESIGNCLASS="" LOCALCOMMAND=""/>
|
||||||
|
</FILELIST>
|
||||||
|
<BUILDTOOLS>
|
||||||
|
</BUILDTOOLS>
|
||||||
|
|
||||||
|
<IDEOPTIONS>
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=0
|
||||||
|
AutoIncBuild=0
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=0
|
||||||
|
Debug=0
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=1040
|
||||||
|
CodePage=1252
|
||||||
|
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=
|
||||||
|
FileDescription=
|
||||||
|
FileVersion=1.0.0.0
|
||||||
|
InternalName=
|
||||||
|
LegalCopyright=
|
||||||
|
LegalTrademarks=
|
||||||
|
OriginalFilename=
|
||||||
|
ProductName=
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=
|
||||||
|
|
||||||
|
[Debugging]
|
||||||
|
DebugSourceDirs=$(BCB)\source\vcl
|
||||||
|
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
Launcher=
|
||||||
|
UseLauncher=0
|
||||||
|
DebugCWD=
|
||||||
|
HostApplication=.\CustomControlSample.exe
|
||||||
|
RemoteHost=
|
||||||
|
RemotePath=
|
||||||
|
RemoteLauncher=
|
||||||
|
RemoteCWD=
|
||||||
|
RemoteDebug=0
|
||||||
|
|
||||||
|
[Compiler]
|
||||||
|
ShowInfoMsgs=0
|
||||||
|
LinkDebugVcl=0
|
||||||
|
LinkCGLIB=0
|
||||||
|
|
||||||
|
[CORBA]
|
||||||
|
AddServerUnit=1
|
||||||
|
AddClientUnit=1
|
||||||
|
PrecompiledHeaders=1
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
ActiveLang=
|
||||||
|
ProjectLang=
|
||||||
|
RootDir=
|
||||||
|
|
||||||
|
[Linker]
|
||||||
|
LibPrefix=
|
||||||
|
LibSuffix=
|
||||||
|
LibVersion=
|
||||||
|
</IDEOPTIONS>
|
||||||
|
</PROJECT>
|
97
reactos/lib/uxtheme/uxtheme.def
Normal file
97
reactos/lib/uxtheme/uxtheme.def
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
LIBRARY UXTHEME.DLL
|
||||||
|
|
||||||
|
EXPORTS
|
||||||
|
; <unknown> @0
|
||||||
|
; <unknown> @1
|
||||||
|
; <unknown> @2
|
||||||
|
; <unknown> @3
|
||||||
|
; <unknown> @4
|
||||||
|
CloseThemeData @5
|
||||||
|
DrawThemeBackground @6
|
||||||
|
; <unknown> @7
|
||||||
|
; <unknown> @8
|
||||||
|
; <unknown> @9
|
||||||
|
; <unknown> @10
|
||||||
|
; <unknown> @11
|
||||||
|
;DrawThemeEdge @12
|
||||||
|
; <unknown> @13
|
||||||
|
; <unknown> @14
|
||||||
|
; <unknown> @15
|
||||||
|
; <unknown> @16
|
||||||
|
; <unknown> @17
|
||||||
|
; <unknown> @18
|
||||||
|
; <unknown> @19
|
||||||
|
; <unknown> @20
|
||||||
|
; <unknown> @21
|
||||||
|
; <unknown> @22
|
||||||
|
; <unknown> @23
|
||||||
|
; <unknown> @24
|
||||||
|
; <unknown> @25
|
||||||
|
; <unknown> @26
|
||||||
|
; <unknown> @27
|
||||||
|
; <unknown> @28
|
||||||
|
; <unknown> @29
|
||||||
|
; <unknown> @30
|
||||||
|
; <unknown> @31
|
||||||
|
; <unknown> @32
|
||||||
|
; <unknown> @33
|
||||||
|
; <unknown> @34
|
||||||
|
; <unknown> @35
|
||||||
|
; <unknown> @36
|
||||||
|
;DrawThemeIcon @37
|
||||||
|
DrawThemeParentBackground @38
|
||||||
|
;DrawThemeText @39
|
||||||
|
;EnableThemeDialogTexture @40
|
||||||
|
;EnableTheming @41
|
||||||
|
;GetCurrentThemeName @42
|
||||||
|
; <unknown> @43
|
||||||
|
; <unknown> @44
|
||||||
|
; <unknown> @45
|
||||||
|
; <unknown> @46
|
||||||
|
; <unknown> @47
|
||||||
|
; <unknown> @48
|
||||||
|
;GetThemeAppProperties @49
|
||||||
|
;GetThemeBackgroundContentRect @50
|
||||||
|
;GetThemeBackgroundExtent @51
|
||||||
|
;GetThemeBackgroundRegion @52
|
||||||
|
;GetThemeBool @53
|
||||||
|
;GetThemeColor @54
|
||||||
|
;GetThemeDocumentationProperty @55
|
||||||
|
;GetThemeEnumValue @56
|
||||||
|
;GetThemeFilename @57
|
||||||
|
;GetThemeFont @58
|
||||||
|
;GetThemeInt @59
|
||||||
|
; <unknown> @60
|
||||||
|
; <unknown> @61
|
||||||
|
; <unknown> @62
|
||||||
|
; <unknown> @63
|
||||||
|
;GetThemeIntList @64
|
||||||
|
;GetThemeMargins @65
|
||||||
|
;GetThemeMetric @66
|
||||||
|
;GetThemePartSize @67
|
||||||
|
;GetThemePosition @68
|
||||||
|
;GetThemePropertyOrigin @69
|
||||||
|
;GetThemeRect @70
|
||||||
|
;GetThemeString @71
|
||||||
|
;GetThemeSysBool @72
|
||||||
|
;GetThemeSysColor @73
|
||||||
|
;GetThemeSysColorBrush @74
|
||||||
|
;GetThemeSysFont @75
|
||||||
|
;GetThemeSysInt @76
|
||||||
|
;GetThemeSysSize @77
|
||||||
|
;GetThemeSysString @78
|
||||||
|
;GetThemeTextExtent @79
|
||||||
|
;GetThemeTextMetrics @80
|
||||||
|
;GetWindowTheme @81
|
||||||
|
;HitTestThemeBackground @82
|
||||||
|
;IsAppThemed @83
|
||||||
|
;IsThemeActive @84
|
||||||
|
IsThemeBackgroundPartiallyTransparent @85
|
||||||
|
;IsThemeDialogTextureEnabled @86
|
||||||
|
;IsThemePartDefined @87
|
||||||
|
OpenThemeData @88
|
||||||
|
;SetThemeAppProperties @89
|
||||||
|
;SetWindowTheme @90
|
||||||
|
|
||||||
|
; EOF
|
||||||
|
|
51
reactos/lib/uxtheme/uxtheme.rc
Normal file
51
reactos/lib/uxtheme/uxtheme.rc
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#include <windows.h>
|
||||||
|
#include <reactos/resource.h>
|
||||||
|
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION \
|
||||||
|
RES_UINT_FV_MAJOR, \
|
||||||
|
RES_UINT_FV_MINOR, \
|
||||||
|
RES_UINT_FV_REVISION, \
|
||||||
|
RES_UINT_FV_BUILD
|
||||||
|
|
||||||
|
PRODUCTVERSION \
|
||||||
|
RES_UINT_PV_MAJOR, \
|
||||||
|
RES_UINT_PV_MINOR, \
|
||||||
|
RES_UINT_PV_REVISION, \
|
||||||
|
RES_UINT_PV_BUILD
|
||||||
|
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
#ifdef _DEBUG
|
||||||
|
FILEFLAGS 0x1L
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS 0x40004L
|
||||||
|
FILETYPE 0x2L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
{
|
||||||
|
BLOCK "040904b0"
|
||||||
|
{
|
||||||
|
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||||
|
VALUE "FileDescription", "ReactOS UxTheme\0"
|
||||||
|
VALUE "FileVersion", RES_STR_FILE_VERSION
|
||||||
|
VALUE "InternalName", "uxtheme\0"
|
||||||
|
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||||
|
VALUE "OriginalFilename", "uxtheme.dll\0"
|
||||||
|
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||||
|
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
{
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
}
|
||||||
|
END
|
||||||
|
|
||||||
|
/* EOF */
|
205
reactos/lib/uxtheme/uxthemedll.c
Normal file
205
reactos/lib/uxtheme/uxthemedll.c
Normal file
|
@ -0,0 +1,205 @@
|
||||||
|
#include "uxthemedll.h"
|
||||||
|
#include "nostyle/button.h"
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define HTHEME_TO_UXTHEME_(H__) ((PUXTHEME_DATA)(H__))
|
||||||
|
|
||||||
|
STDAPI UxTheme_ClipDc(HDC hdc, const RECT * pClipRect, HRGN * phrgnSave)
|
||||||
|
{
|
||||||
|
*phrgnSave = CreateRectRgn(0, 0, 0, 0);
|
||||||
|
|
||||||
|
switch(GetClipRgn(hdc, *phrgnSave))
|
||||||
|
{
|
||||||
|
/* no user-defined clipping region */
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
HRGN hrgnClip;
|
||||||
|
|
||||||
|
/* no region to restore */
|
||||||
|
DeleteObject(*phrgnSave);
|
||||||
|
*phrgnSave = NULL;
|
||||||
|
|
||||||
|
/* create the clipping rectangle */
|
||||||
|
if((hrgnClip = CreateRectRgnIndirect(pClipRect)) != NULL)
|
||||||
|
{
|
||||||
|
/* select the clipping rectangle */
|
||||||
|
if(SelectClipRgn(hdc, hrgnClip) != ERROR)
|
||||||
|
{
|
||||||
|
/* success */
|
||||||
|
DeleteObject(hrgnClip);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* failure */
|
||||||
|
DeleteObject(hrgnClip);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* user-defined clipping region */
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
HRGN hrgnClip;
|
||||||
|
|
||||||
|
/* create the clipping rectangle */
|
||||||
|
if((hrgnClip = CreateRectRgnIndirect(pClipRect)) != NULL)
|
||||||
|
{
|
||||||
|
/* select the clipping rectangle */
|
||||||
|
if(ExtSelectClipRgn(hdc, hrgnClip, RGN_AND) != ERROR)
|
||||||
|
{
|
||||||
|
/* success */
|
||||||
|
DeleteObject(hrgnClip);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* failure */
|
||||||
|
DeleteObject(hrgnClip);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* error */
|
||||||
|
case -1:
|
||||||
|
{
|
||||||
|
/* no region to restore */
|
||||||
|
DeleteObject(*phrgnSave);
|
||||||
|
*phrgnSave = NULL;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* failure */
|
||||||
|
return HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
|
STDAPI UxTheme_UnclipDc(HDC hdc, HRGN hrgnSave)
|
||||||
|
{
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
if(hrgnSave == NULL) return S_FALSE;
|
||||||
|
|
||||||
|
if(SelectClipRgn(hdc, hrgnSave) != ERROR) hres = S_OK;
|
||||||
|
else hres = HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
|
||||||
|
DeleteObject(hrgnSave);
|
||||||
|
return hres;
|
||||||
|
}
|
||||||
|
|
||||||
|
THEMEAPI DrawThemeBackground
|
||||||
|
(
|
||||||
|
HTHEME hTheme,
|
||||||
|
HDC hdc,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId,
|
||||||
|
const RECT * pRect,
|
||||||
|
const RECT * pClipRect
|
||||||
|
)
|
||||||
|
{
|
||||||
|
PUXTHEME_DATA pUxTheme = HTHEME_TO_UXTHEME_(hTheme);
|
||||||
|
|
||||||
|
return pUxTheme->pvt->p_DrawBackground
|
||||||
|
(
|
||||||
|
pUxTheme,
|
||||||
|
hdc,
|
||||||
|
iPartId,
|
||||||
|
iStateId,
|
||||||
|
pRect,
|
||||||
|
pClipRect
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
THEMEAPI DrawThemeEdge
|
||||||
|
(
|
||||||
|
HTHEME hTheme,
|
||||||
|
HDC hdc,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId,
|
||||||
|
const RECT * pDestRect,
|
||||||
|
UINT uEdge,
|
||||||
|
UINT uFlags,
|
||||||
|
RECT * pContentRect
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
THEMEAPI DrawThemeIcon
|
||||||
|
(
|
||||||
|
HTHEME hTheme,
|
||||||
|
HDC hdc,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId,
|
||||||
|
const RECT * pRect,
|
||||||
|
HIMAGELIST himl,
|
||||||
|
int iImageIndex
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
THEMEAPI DrawThemeParentBackground
|
||||||
|
(
|
||||||
|
HWND hwnd,
|
||||||
|
HDC hdc,
|
||||||
|
RECT * prc
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
THEMEAPI_(BOOL) IsThemeBackgroundPartiallyTransparent
|
||||||
|
(
|
||||||
|
HTHEME hTheme,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
THEMEAPI_(HTHEME) OpenThemeData
|
||||||
|
(
|
||||||
|
HWND hwnd,
|
||||||
|
LPCWSTR pszClassList
|
||||||
|
)
|
||||||
|
{
|
||||||
|
PUXTHEME_DATA pUxTheme;
|
||||||
|
PCUXTHEME_VTABLE pvt;
|
||||||
|
|
||||||
|
if(_wcsicmp(pszClassList, L"Button") == 0) pvt = &Button_Vt;
|
||||||
|
else return NULL;
|
||||||
|
|
||||||
|
pUxTheme = (PUXTHEME_DATA)malloc(sizeof(*pUxTheme));
|
||||||
|
|
||||||
|
if(pUxTheme == NULL) return NULL;
|
||||||
|
|
||||||
|
pUxTheme->pvt = pvt;
|
||||||
|
|
||||||
|
return (HTHEME)pUxTheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
THEMEAPI CloseThemeData
|
||||||
|
(
|
||||||
|
HTHEME hTheme
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
|
||||||
|
{
|
||||||
|
(void)lpvReserved;
|
||||||
|
|
||||||
|
if(fwdreason == DLL_PROCESS_ATTACH)
|
||||||
|
DisableThreadLibraryCalls(hinstDLL);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
||||||
|
|
50
reactos/lib/uxtheme/uxthemedll.h
Normal file
50
reactos/lib/uxtheme/uxthemedll.h
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#ifndef UXTHEMEDLL_H_INCLUDED__
|
||||||
|
#define UXTHEMEDLL_H_INCLUDED__
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#define _UXTHEME_
|
||||||
|
#include <uxtheme.h>
|
||||||
|
#include <tmschema.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct UXTHEME_DATA_;
|
||||||
|
struct UXTHEME_VTABLE_;
|
||||||
|
|
||||||
|
struct UXTHEME_VTABLE_
|
||||||
|
{
|
||||||
|
HRESULT STDAPICALLTYPE (* p_DrawBackground)
|
||||||
|
(
|
||||||
|
struct UXTHEME_DATA_ * pData,
|
||||||
|
HDC hdc,
|
||||||
|
int iPartId,
|
||||||
|
int iStateId,
|
||||||
|
const RECT * pRect,
|
||||||
|
const RECT * pClipRect
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct UXTHEME_VTABLE_ UXTHEME_VTABLE, * PUXTHEME_VTABLE;
|
||||||
|
typedef const struct UXTHEME_VTABLE_ * PCUXTHEME_VTABLE;
|
||||||
|
|
||||||
|
typedef struct UXTHEME_DATA_
|
||||||
|
{
|
||||||
|
PCUXTHEME_VTABLE pvt;
|
||||||
|
PVOID pData;
|
||||||
|
}
|
||||||
|
UXTHEME_DATA, * PUXTHEME_DATA;
|
||||||
|
|
||||||
|
STDAPI UxTheme_ClipDc(HDC hdc, const RECT * pClipRect, HRGN * phrgnSave);
|
||||||
|
STDAPI UxTheme_UnclipDc(HDC hdc, HRGN hrgnSave);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* EOF */
|
Loading…
Reference in a new issue