📄 dxuxtheme.pas
字号:
TGetThemeMargins = function(hTheme: TdxTheme; DC: HDC; iPartId, iStateId, iPropId: Integer;
prc: PRect; out Margins: TdxMargins): HRESULT; stdcall;
TGetThemeMetric = function(hTheme: TdxTheme; DC: HDC; iPartId, iStateId, iPropId: Integer;
out iVal: Integer): HRESULT; stdcall;
TGetThemePartSize = function(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
prc: PRect; eSize: TdxThemeSize; psz: PSize): HRESULT; stdcall;
TGetThemePosition = function(hTheme: TdxTheme; iPartId, iStateId, iPropId: Integer;
out Point: TPoint): HRESULT; stdcall;
TGetThemePropertyOrigin = function(hTheme: TdxTheme; iPartId, iStateId, iPropId: Integer;
out Origin: TdxPropertyOrigin): HRESULT; stdcall;
TGetThemeRect = function(hTheme: TdxTheme; iPartId, iStateId, iPropId: Integer;
out Rect: TRect): HRESULT; stdcall;
TGetThemeString = function(hTheme: TdxTheme; iPartId, iStateId, iPropId: Integer;
pszBuff: PWideChar; cchMaxBuffChars: Integer): HRESULT; stdcall;
TGetThemeSysBool = function(hTheme: TdxTheme; iBoolId: Integer): BOOL; stdcall;
TGetThemeSysColor = function(hTheme: TdxTheme; iColorId: Integer): COLORREF; stdcall;
TGetThemeSysColorBrush = function(hTheme: TdxTheme; iColorId: Integer): HBRUSH; stdcall;
TGetThemeSysFont = function(hTheme: TdxTheme; iFontId: Integer; out lf: LOGFONTW): HRESULT; stdcall;
TGetThemeSysInt = function(hTheme: TdxTheme; iIntId: Integer; var iValue: Integer): HRESULT; stdcall;
TGetThemeSysSize = function(hTheme: TdxTheme; iSizeId: Integer): Integer; stdcall;
TGetThemeSysString = function(hTheme: TdxTheme; iStringId: Integer; pszStringBuff: PWideChar;
cchMaxStringChars: Integer): HRESULT; stdcall;
TGetThemeTextExtent = function(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pszTextL: PWideChar; iCharCount: Integer; dwTextFlags: DWORD;
pBoundingRect: PRect; out ExtentRect: TRect): HRESULT; stdcall;
TGetThemeTextMetrics = function(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
out tm: TEXTMETRIC): HRESULT; stdcall;
TGetWindowTheme = function(hWnd: HWND): TdxTheme;stdcall;
THitTestThemeBackground = function(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
dwOptions: DWORD; pRect : PRect; hRgn: HRGN; ptTest: TPoint;
out wHitTestCode: WORD): HRESULT; stdcall;
TIsAppThemed = function: BOOL; stdcall;
TIsThemeActive = function: BOOL; stdcall;
TIsThemePartDefined = function(hTheme: TdxTheme; iPartId, iStateId: Integer): BOOL; stdcall;
TIsThemeBackgroundPartiallyTransparent = function(hTheme: TdxTheme;
iPartId, iStateId: Integer): BOOL; stdcall;
TIsThemeDialogTextureEnabled = function(hWnd: HWND): BOOL; stdcall;
TOpenThemeData = function(hWnd: HWND; pszClassList: PWideChar): TdxTheme; stdcall;
TSetThemeAppProperties = procedure(dwFlags: DWORD); stdcall;
TSetWindowTheme = function(hWnd: HWND; pszSubAppName, pszSubIdList: PWideChar): HRESULT; stdcall;
//vista extention
TBufferedPaintInit = function: HRESULT; stdcall;
TBufferedPaintUnInit = function: HRESULT; stdcall;
TBeginBufferedPaint = function(hdcTarget: HDC; prcTarget: PRect;
dwFormat: DWORD; pPaintParams: PdxBPPaintParams; var dc: HDC): TdxPaintBuffer; stdcall;
TEndBufferedPaint = function(hBufferedPaint: TdxPaintBuffer; fUpdateTarget: BOOL): HRESULT; stdcall;
TBufferedPaintSetAlpha = function(hBufferedPaint: TdxPaintBuffer; prc: PRect; alpha: Byte): HRESULT; stdcall;
TThemeLibraryMethodPointersKeeper = record
FCloseThemeData: TCloseThemeData;
FDrawThemeBackground: TDrawThemeBackground;
FDrawThemeEdge: TDrawThemeEdge;
FDrawThemeIcon: TDrawThemeIcon;
FDrawThemeParentBackground: TDrawThemeParentBackground;
FDrawThemeText: TDrawThemeText;
FDrawThemeTextEx: TDrawThemeTextEx;
FEnableThemeDialogTexture: TEnableThemeDialogTexture;
FGetCurrentThemeName: TGetCurrentThemeName;
FGetThemeAppProperties: TGetThemeAppProperties;
FGetThemeBackgroundContentRect: TGetThemeBackgroundContentRect;
FGetThemeBackgroundRegion: TGetThemeBackgroundRegion;
FGetThemeBackgroundExtent: TGetThemeBackgroundExtent;
FGetThemeBool: TGetThemeBool;
FGetThemeColor: TGetThemeColor;
FGetThemeDocumentationProperty: TGetThemeDocumentationProperty;
FGetThemeEnumValue: TGetThemeEnumValue;
FGetThemeFilename: TGetThemeFilename;
FGetThemeFont: TGetThemeFont;
FGetThemeInt: TGetThemeInt;
FGetThemeIntList: TGetThemeIntList;
FGetThemeMargins: TGetThemeMargins;
FGetThemeMetric: TGetThemeMetric;
FGetThemePartSize: TGetThemePartSize;
FGetThemePosition: TGetThemePosition;
FGetThemePropertyOrigin: TGetThemePropertyOrigin;
FGetThemeRect: TGetThemeRect;
FGetThemeString: TGetThemeString;
FGetThemeSysBool: TGetThemeSysBool;
FGetThemeSysColor: TGetThemeSysColor;
FGetThemeSysColorBrush: TGetThemeSysColorBrush;
FGetThemeSysFont: TGetThemeSysFont;
FGetThemeSysInt: TGetThemeSysInt;
FGetThemeSysSize: TGetThemeSysSize;
FGetThemeSysString: TGetThemeSysString;
FGetThemeTextExtent: TGetThemeTextExtent;
FGetThemeTextMetrics: TGetThemeTextMetrics;
FGetWindowTheme: TGetWindowTheme;
FHitTestThemeBackground: THitTestThemeBackground;
FIsAppThemed: TIsAppThemed;
FIsThemeActive: TIsThemeActive;
FIsThemePartDefined: TIsThemePartDefined;
FIsThemeBackgroundPartiallyTransparent: TIsThemeBackgroundPartiallyTransparent;
FIsThemeDialogTextureEnabled: TIsThemeDialogTextureEnabled;
FOpenThemeData: TOpenThemeData;
FSetThemeAppProperties: TSetThemeAppProperties;
FSetWindowTheme: TSetWindowTheme;
//vista extention
FBufferedPaintInit: TBufferedPaintInit;
FBufferedPaintUnInit: TBufferedPaintUnInit;
FBeginBufferedPaint: TBeginBufferedPaint;
FEndBufferedPaint: TEndBufferedPaint;
FBufferedPaintSetAlpha: TBufferedPaintSetAlpha;
end;
var
FIsWindowsXPOrLater: Boolean;
FThemeLibrary: HMODULE = 0;
FThemeLibraryMethodPointersKeeper: TThemeLibraryMethodPointersKeeper;
function OpenThemeData(hWnd: HWND; pszClassList: PWideChar): TdxTheme;
begin
Result := FThemeLibraryMethodPointersKeeper.FOpenThemeData(hWnd, pszClassList);
end;
function CloseThemeData(hTheme: TdxTheme): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FCloseThemeData(hTheme);
end;
function DrawThemeBackground(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pRect: PRect; pClipRect: PRect = nil
): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FDrawThemeBackground(hTheme, DC,
iPartId, iStateId, pRect, pClipRect);
end;
function DrawThemeBackground(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
const pRect: TRect; pClipRect: PRect = nil): HRESULT;
begin
Result := DrawThemeBackground(hTheme, DC, iPartId, iStateId, @pRect, pClipRect);
end;
function DrawThemeBackground(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
const pRect: TRect; const pClipRect: TRect): HRESULT;
begin
Result := DrawThemeBackground(hTheme, DC, iPartId, iStateId, @pRect, @pClipRect);
end;
function DrawThemeText(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pszText: PWideChar;
iCharCount: Integer; dwTextFlags, dwTextFlags2: DWORD;
pRect: PRect): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FDrawThemeText(hTheme, DC, iPartId, iStateId,
pszText, iCharCount, dwTextFlags, dwTextFlags2, pRect);
end;
function DrawThemeText(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pszText: string; iCharCount: Integer; dwTextFlags, dwTextFlags2: DWORD;
const pRect: TRect): HRESULT;
begin
Result := DrawThemeText(hTheme, DC, iPartId, iStateId,
PWideChar(WideString(pszText)), iCharCount, dwTextFlags, dwTextFlags2, @pRect);
end;
//vista extention
function DrawThemeTextEx(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
const pszText: WideString; iCharCount: Integer; dwTextFlags: DWORD;
const pRect: TRect; const pOptions: TdxDTTOpts): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FDrawThemeTextEx(hTheme, DC, iPartId, iStateId,
PWideChar(pszText), iCharCount, dwTextFlags, @pRect, pOptions);
end;
function GetThemeBackgroundContentRect(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
const BoundingRect: TRect; out ContentRect: TRect): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeBackgroundContentRect(hTheme,
DC, iPartId, iStateId, BoundingRect, ContentRect);
end;
function GetThemeBackgroundExtent(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pContentRect: PRect;
out ExtentRect: TRect): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeBackgroundExtent(hTheme, DC,
iPartId, iStateId, pContentRect, ExtentRect);
end;
function GetThemePartSize(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
prc: PRect; eSize: TdxThemeSize;
psz: PSize): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemePartSize(hTheme, DC, iPartId,
iStateId, prc, eSize, psz);
end;
function GetThemePartSize(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
const prc: TRect; eSize: TdxThemeSize; out psz: TSize): HRESULT;
begin
Result := GetThemePartSize(hTheme, DC, iPartId, iStateId, @prc, eSize, @psz);
end;
function GetThemePartSize(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
eSize: TdxThemeSize; out psz: TSize): HRESULT;
begin
Result := GetThemePartSize(hTheme, DC, iPartId, iStateId, nil, eSize, @psz);
end;
function GetThemeTextExtent(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pszTextL: PWideChar; iCharCount: Integer; dwTextFlags: DWORD;
pBoundingRect: PRect; out ExtentRect: TRect): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeTextExtent(hTheme, DC, iPartId,
iStateId, pszTextL, iCharCount, dwTextFlags, pBoundingRect, ExtentRect);
end;
function GetThemeTextMetrics(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
out tm: TEXTMETRIC): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeTextMetrics(hTheme, DC, iPartId,
iStateId, tm);
end;
function GetThemeBackgroundRegion(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pRect: PRect; out Region: HRGN): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeBackgroundRegion(hTheme,
DC, iPartId, iStateId, pRect, Region);
end;
function HitTestThemeBackground(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
dwOptions: DWORD; pRect: PRect;
hRgn: HRGN; ptTest: TPoint; out wHitTestCode: WORD): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FHitTestThemeBackground(hTheme, DC,
iPartId, iStateId, dwOptions, pRect, hRgn, ptTest, wHitTestCode);
end;
function DrawThemeEdge(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pDestRect: PRect;
uEdge, uFlags: UINT; pContentRect: PRect): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FDrawThemeEdge(hTheme, DC, iPartId, iStateId,
pDestRect, uEdge, uFlags, pContentRect);
end;
function DrawThemeEdge(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
const pDestRect: TRect; uEdge, uFlags: UINT; out pContentRect: TRect): HRESULT;
begin
Result := DrawThemeEdge(hTheme, DC, iPartId, iStateId, @pDestRect, uEdge, uFlags, @pContentRect);
end;
function DrawThemeEdge(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
const pDestRect: TRect; uEdge, uFlags: UINT): HRESULT;
var
R: TRect;
begin
Result := DrawThemeEdge(hTheme, DC, iPartId, iStateId, pDestRect, uEdge, uFlags, R);
end;
function DrawThemeIcon(hTheme: TdxTheme; DC: HDC; iPartId, iStateId: Integer;
pRect: PRect; himl: HIMAGELIST; iImageIndex: Integer): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FDrawThemeIcon(hTheme, DC, iPartId, iStateId,
pRect, himl, iImageIndex);
end;
function IsThemePartDefined(hTheme: TdxTheme; iPartId: Integer; iStateId: Integer): BOOL;
begin
Result := FThemeLibraryMethodPointersKeeper.FIsThemePartDefined(hTheme, iPartId, iStateId);
end;
function IsThemeBackgroundPartiallyTransparent(hTheme: TdxTheme;
iPartId: Integer; iStateId: Integer): BOOL;
begin
Result := FThemeLibraryMethodPointersKeeper.FIsThemeBackgroundPartiallyTransparent(hTheme,
iPartId, iStateId);
end;
function DrawThemeParentBackground(hWnd: HWND; DC: HDC; const prc: TRect): HRESULT;
var
AFontHandle: HFONT;
begin
AFontHandle := GetCurrentObject(DC, OBJ_FONT);
Result := FThemeLibraryMethodPointersKeeper.FDrawThemeParentBackground(hWnd, DC, prc);
SelectObject(DC, AFontHandle);
end;
function GetThemeColor(hTheme: TdxTheme; iPartId, iStateId, iPropId: Integer;
out Color: TColorRef): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeColor(hTheme, iPartId, iStateId, iPropId, Color);
end;
function GetThemeMetric(hTheme: TdxTheme; DC: HDC; iPartId, iStateId, iPropId: Integer;
out iVal: Integer): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeMetric(hTheme, DC, iPartId,
iStateId, iPropId, iVal);
end;
function GetThemeString(hTheme: TdxTheme; iPartId, iStateId, iPropId: Integer;
pszBuff: PWideChar; cchMaxBuffChars: Integer): HRESULT;
begin
Result := FThemeLibraryMethodPointersKeeper.FGetThemeString(hTheme, iPartId, iStateId,
iPropId, pszBuff, cchMaxBuffChars);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -