📄 visualstylesxp.h
字号:
/////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2001-2002 by David Yuheng Zhao
//
// Distribute and change freely, except: don't remove my name from the source
//
// No warrantee of any kind, express or implied, is included with this
// software; use at your own risk, responsibility for damages (if any) to
// anyone resulting from the use of this software rests entirely with the
// user.
//
// Partly based on the _ThemeHelper struct in MFC7.0 source code (winctrl3.cpp),
// and the difference is that this implementation wraps the full set of
// visual style APIs from the platform SDK August 2001
//
// If you have any questions, I can be reached as follows:
// yuheng_zhao@yahoo.com
//
//
// How to use:
// Instead of calling the API directly,
// OpenThemeData(...);
// use the global variable
// g_xpStyle.OpenThemeData(...);
//
//
//
// Date: 2002-07-27
// This update was made by Mathias Tunared.
// He changed the function variable to static to make the code faster.
// He also added the function 'UseVisualStyles()' so you can check if to
// draw with the visual styles or not. That function checks first the
// version of the 'ComCtl32.dll' and the checks if the theme is activated
// and the HTHEME handle is not NULL.
//
// CAdvComboBox Control
// Version: 2.1
// Date: August 2002
// Author: Mathias Tunared
// Email: Mathias@inorbit.com
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability for any damage/loss of business that
// this product may cause.
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _VISUALSTYLE_XP_H_
#define _VISUALSTYLE_XP_H_
#pragma once
#pragma warning(push, 3)
#include <uxtheme.h>
#include <tmschema.h>
class CVisualStylesXP
{
private:
HMODULE m_hThemeDll;
void* GetProc(LPCSTR szProc, void* pfnFail);
typedef HTHEME(__stdcall *PFNOPENTHEMEDATA)(HWND hwnd, LPCTSTR pszClassList);
static HTHEME OpenThemeDataFail(HWND , LPCTSTR )
{return NULL;}
typedef HRESULT(__stdcall *PFNCLOSETHEMEDATA)(HTHEME hTheme);
static HRESULT CloseThemeDataFail(HTHEME)
{return E_FAIL;}
typedef HRESULT(__stdcall *PFNDRAWTHEMEBACKGROUND)(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect);
static HRESULT DrawThemeBackgroundFail(HTHEME, HDC, int, int, const RECT *, const RECT *)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNDRAWTHEMETEXT)(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, LPCTSTR pszText, int iCharCount, DWORD dwTextFlags,
DWORD dwTextFlags2, const RECT *pRect);
static HRESULT DrawThemeTextFail(HTHEME, HDC, int, int, LPCWSTR, int, DWORD, DWORD, const RECT*)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEBACKGROUNDCONTENTRECT)(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, const RECT *pBoundingRect,
RECT *pContentRect);
static HRESULT GetThemeBackgroundContentRectFail(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, const RECT *pBoundingRect,
RECT *pContentRect)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEBACKGROUNDEXTENT)(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, const RECT *pContentRect,
RECT *pExtentRect);
static HRESULT GetThemeBackgroundExtentFail(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, const RECT *pContentRect,
RECT *pExtentRect)
{return E_FAIL;}
typedef HRESULT(__stdcall *PFNGETTHEMEPARTSIZE)(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, RECT * pRect, enum THEMESIZE eSize, SIZE *psz);
static HRESULT GetThemePartSizeFail(HTHEME, HDC, int, int, RECT *, enum THEMESIZE, SIZE *)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMETEXTEXTENT)(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, LPCTSTR pszText, int iCharCount,
DWORD dwTextFlags, const RECT *pBoundingRect,
RECT *pExtentRect);
static HRESULT GetThemeTextExtentFail(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, LPCTSTR pszText, int iCharCount,
DWORD dwTextFlags, const RECT *pBoundingRect,
RECT *pExtentRect)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMETEXTMETRICS)(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, TEXTMETRIC* ptm);
static HRESULT GetThemeTextMetricsFail(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, TEXTMETRIC* ptm)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEBACKGROUNDREGION)(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, const RECT *pRect, HRGN *pRegion);
static HRESULT GetThemeBackgroundRegionFail(HTHEME hTheme, HDC hdc,
int iPartId, int iStateId, const RECT *pRect, HRGN *pRegion)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNHITTESTTHEMEBACKGROUND)(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, DWORD dwOptions, const RECT *pRect, HRGN hrgn,
POINT ptTest, WORD *pwHitTestCode);
static HRESULT HitTestThemeBackgroundFail(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, DWORD dwOptions, const RECT *pRect, HRGN hrgn,
POINT ptTest, WORD *pwHitTestCode)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNDRAWTHEMEEDGE)(HTHEME hTheme, HDC hdc, int iPartId, int iStateId,
const RECT *pDestRect, UINT uEdge, UINT uFlags, RECT *pContentRect);
static HRESULT DrawThemeEdgeFail(HTHEME hTheme, HDC hdc, int iPartId, int iStateId,
const RECT *pDestRect, UINT uEdge, UINT uFlags, RECT *pContentRect)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNDRAWTHEMEICON)(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, const RECT *pRect, HIMAGELIST himl, int iImageIndex);
static HRESULT DrawThemeIconFail(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, const RECT *pRect, HIMAGELIST himl, int iImageIndex)
{return E_FAIL;}
typedef BOOL (__stdcall *PFNISTHEMEPARTDEFINED)(HTHEME hTheme, int iPartId,
int iStateId);
static BOOL IsThemePartDefinedFail(HTHEME hTheme, int iPartId,
int iStateId)
{return FALSE;}
typedef BOOL (__stdcall *PFNISTHEMEBACKGROUNDPARTIALLYTRANSPARENT)(HTHEME hTheme,
int iPartId, int iStateId);
static BOOL IsThemeBackgroundPartiallyTransparentFail(HTHEME hTheme,
int iPartId, int iStateId)
{return FALSE;}
typedef HRESULT (__stdcall *PFNGETTHEMECOLOR)(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, COLORREF *pColor);
static HRESULT GetThemeColorFail(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, COLORREF *pColor)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEMETRIC)(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, int iPropId, int *piVal);
static HRESULT GetThemeMetricFail(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, int iPropId, int *piVal)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMESTRING)(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, LPCTSTR pszBuff, int cchMaxBuffChars);
static HRESULT GetThemeStringFail(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, LPCTSTR pszBuff, int cchMaxBuffChars)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEBOOL)(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, BOOL *pfVal);
static HRESULT GetThemeBoolFail(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, BOOL *pfVal)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEINT)(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, int *piVal);
static HRESULT GetThemeIntFail(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, int *piVal)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEENUMVALUE)(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, int *piVal);
static HRESULT GetThemeEnumValueFail(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, int *piVal)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEPOSITION)(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, POINT *pPoint);
static HRESULT GetThemePositionFail(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, POINT *pPoint)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEFONT)(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, int iPropId, LOGFONT *pFont);
static HRESULT GetThemeFontFail(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, int iPropId, LOGFONT *pFont)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMERECT)(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, RECT *pRect);
static HRESULT GetThemeRectFail(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, RECT *pRect)
{return E_FAIL;}
typedef HRESULT (__stdcall *PFNGETTHEMEMARGINS)(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, int iPropId, RECT *prc, MARGINS *pMargins);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -