📄 visualstylesxp.cpp
字号:
static PFNGETTHEMEPOSITION pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEPOSITION)GetProc("GetThemePosition", (void*)GetThemePositionFail);
return (*pfn)(hTheme, iPartId, iStateId, iPropId, pPoint);
}
HRESULT CVisualStylesXP::GetThemeFont(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, int iPropId, LOGFONT *pFont)
{
static PFNGETTHEMEFONT pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEFONT)GetProc("GetThemeFont", (void*)GetThemeFontFail);
return (*pfn)(hTheme, hdc, iPartId, iStateId, iPropId, pFont);
}
HRESULT CVisualStylesXP::GetThemeRect(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, RECT *pRect)
{
static PFNGETTHEMERECT pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMERECT)GetProc("GetThemeRect", (void*)GetThemeRectFail);
return (*pfn)(hTheme, iPartId, iStateId, iPropId, pRect);
}
HRESULT CVisualStylesXP::GetThemeMargins(HTHEME hTheme, HDC hdc, int iPartId,
int iStateId, int iPropId, RECT *prc, MARGINS *pMargins)
{
static PFNGETTHEMEMARGINS pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEMARGINS)GetProc("GetThemeMargins", (void*)GetThemeMarginsFail);
return (*pfn)(hTheme, hdc, iPartId, iStateId, iPropId, prc, pMargins);
}
HRESULT CVisualStylesXP::GetThemeIntList(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, INTLIST *pIntList)
{
static PFNGETTHEMEINTLIST pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEINTLIST)GetProc("GetThemeIntList", (void*)GetThemeIntListFail);
return (*pfn)(hTheme, iPartId, iStateId, iPropId, pIntList);
}
HRESULT CVisualStylesXP::GetThemePropertyOrigin(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, enum PROPERTYORIGIN *pOrigin)
{
static PFNGETTHEMEPROPERTYORIGIN pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEPROPERTYORIGIN)GetProc("GetThemePropertyOrigin", (void*)GetThemePropertyOriginFail);
return (*pfn)(hTheme, iPartId, iStateId, iPropId, pOrigin);
}
HRESULT CVisualStylesXP::SetWindowTheme(HWND hwnd, LPCTSTR pszSubAppName,
LPCTSTR pszSubIdList)
{
static PFNSETWINDOWTHEME pfn = NULL;
if( !pfn )
pfn = (PFNSETWINDOWTHEME)GetProc("SetWindowTheme", (void*)SetWindowThemeFail);
return (*pfn)(hwnd, pszSubAppName, pszSubIdList);
}
HRESULT CVisualStylesXP::GetThemeFilename(HTHEME hTheme, int iPartId,
int iStateId, int iPropId, LPCTSTR pszThemeFileName, int cchMaxBuffChars)
{
static PFNGETTHEMEFILENAME pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEFILENAME)GetProc("GetThemeFilename", (void*)GetThemeFilenameFail);
return (*pfn)(hTheme, iPartId, iStateId, iPropId, pszThemeFileName, cchMaxBuffChars);
}
COLORREF CVisualStylesXP::GetThemeSysColor(HTHEME hTheme, int iColorId)
{
static PFNGETTHEMESYSCOLOR pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMESYSCOLOR)GetProc("GetThemeSysColor", (void*)GetThemeSysColorFail);
return (*pfn)(hTheme, iColorId);
}
HBRUSH CVisualStylesXP::GetThemeSysColorBrush(HTHEME hTheme, int iColorId)
{
static PFNGETTHEMESYSCOLORBRUSH pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMESYSCOLORBRUSH)GetProc("GetThemeSysColorBrush", (void*)GetThemeSysColorBrushFail);
return (*pfn)(hTheme, iColorId);
}
BOOL CVisualStylesXP::GetThemeSysBool(HTHEME hTheme, int iBoolId)
{
static PFNGETTHEMESYSBOOL pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMESYSBOOL)GetProc("GetThemeSysBool", (void*)GetThemeSysBoolFail);
return (*pfn)(hTheme, iBoolId);
}
int CVisualStylesXP::GetThemeSysSize(HTHEME hTheme, int iSizeId)
{
static PFNGETTHEMESYSSIZE pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMESYSSIZE)GetProc("GetThemeSysSize", (void*)GetThemeSysSizeFail);
return (*pfn)(hTheme, iSizeId);
}
HRESULT CVisualStylesXP::GetThemeSysFont(HTHEME hTheme, int iFontId, LOGFONT *plf)
{
static PFNGETTHEMESYSFONT pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMESYSFONT)GetProc("GetThemeSysFont", (void*)GetThemeSysFontFail);
return (*pfn)(hTheme, iFontId, plf);
}
HRESULT CVisualStylesXP::GetThemeSysString(HTHEME hTheme, int iStringId,
LPCTSTR pszStringBuff, int cchMaxStringChars)
{
static PFNGETTHEMESYSSTRING pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMESYSSTRING)GetProc("GetThemeSysString", (void*)GetThemeSysStringFail);
return (*pfn)(hTheme, iStringId, pszStringBuff, cchMaxStringChars);
}
HRESULT CVisualStylesXP::GetThemeSysInt(HTHEME hTheme, int iIntId, int *piValue)
{
static PFNGETTHEMESYSINT pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMESYSINT)GetProc("GetThemeSysInt", (void*)GetThemeSysIntFail);
return (*pfn)(hTheme, iIntId, piValue);
}
BOOL CVisualStylesXP::IsThemeActive()
{
static PFNISTHEMEACTIVE pfn = NULL;
if( !pfn )
pfn = (PFNISTHEMEACTIVE)GetProc("IsThemeActive", (void*)IsThemeActiveFail);
return (*pfn)();
}
BOOL CVisualStylesXP::IsAppThemed()
{
static PFNISAPPTHEMED pfnIsAppThemed = NULL;
if( !pfnIsAppThemed )
pfnIsAppThemed = (PFNISAPPTHEMED)GetProc("IsAppThemed", (void*)IsAppThemedFail);
return (*pfnIsAppThemed)();
}
HTHEME CVisualStylesXP::GetWindowTheme(HWND hwnd)
{
static PFNGETWINDOWTHEME pfn = NULL;
if( !pfn )
pfn = (PFNGETWINDOWTHEME)GetProc("GetWindowTheme", (void*)GetWindowThemeFail);
return (*pfn)(hwnd);
}
HRESULT CVisualStylesXP::EnableThemeDialogTexture(HWND hwnd, DWORD dwFlags)
{
static PFNENABLETHEMEDIALOGTEXTURE pfn = NULL;
if( !pfn )
pfn = (PFNENABLETHEMEDIALOGTEXTURE)GetProc("EnableThemeDialogTexture", (void*)EnableThemeDialogTextureFail);
return (*pfn)(hwnd, dwFlags);
}
BOOL CVisualStylesXP::IsThemeDialogTextureEnabled(HWND hwnd)
{
static PFNISTHEMEDIALOGTEXTUREENABLED pfn = NULL;
if( !pfn )
pfn = (PFNISTHEMEDIALOGTEXTUREENABLED)GetProc("IsThemeDialogTextureEnabled", (void*)IsThemeDialogTextureEnabledFail);
return (*pfn)(hwnd);
}
DWORD CVisualStylesXP::GetThemeAppProperties()
{
static PFNGETTHEMEAPPPROPERTIES pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEAPPPROPERTIES)GetProc("GetThemeAppProperties", (void*)GetThemeAppPropertiesFail);
return (*pfn)();
}
void CVisualStylesXP::SetThemeAppProperties(DWORD dwFlags)
{
static PFNSETTHEMEAPPPROPERTIES pfn = NULL;
if( !pfn )
pfn = (PFNSETTHEMEAPPPROPERTIES)GetProc("SetThemeAppProperties", (void*)SetThemeAppPropertiesFail);
(*pfn)(dwFlags);
}
HRESULT CVisualStylesXP::GetCurrentThemeName(
LPCTSTR pszThemeFileName, int cchMaxNameChars,
LPCTSTR pszColorBuff, int cchMaxColorChars,
LPCTSTR pszSizeBuff, int cchMaxSizeChars)
{
static PFNGETCURRENTTHEMENAME pfn = NULL;
if( !pfn )
pfn = (PFNGETCURRENTTHEMENAME)GetProc("GetCurrentThemeName", (void*)GetCurrentThemeNameFail);
return (*pfn)(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars);
}
HRESULT CVisualStylesXP::GetThemeDocumentationProperty(LPCTSTR pszThemeName,
LPCTSTR pszPropertyName, LPCTSTR pszValueBuff, int cchMaxValChars)
{
static PFNGETTHEMEDOCUMENTATIONPROPERTY pfn = NULL;
if( !pfn )
pfn = (PFNGETTHEMEDOCUMENTATIONPROPERTY)GetProc("GetThemeDocumentationProperty", (void*)GetThemeDocumentationPropertyFail);
return (*pfn)(pszThemeName, pszPropertyName, pszValueBuff, cchMaxValChars);
}
HRESULT CVisualStylesXP::DrawThemeParentBackground(HWND hwnd, HDC hdc, RECT* prc)
{
static PFNDRAWTHEMEPARENTBACKGROUND pfn = NULL;
if( !pfn )
pfn = (PFNDRAWTHEMEPARENTBACKGROUND)GetProc("DrawThemeParentBackground", (void*)DrawThemeParentBackgroundFail);
return (*pfn)(hwnd, hdc, prc);
}
HRESULT CVisualStylesXP::EnableTheming(BOOL fEnable)
{
static PFNENABLETHEMING pfn = NULL;
if( !pfn )
pfn = (PFNENABLETHEMING)GetProc("EnableTheming", (void*)EnableThemingFail);
return (*pfn)(fEnable);
}
/////////////////////////////////////////////////////////////////////////////
// Added by Mathias Tunared 2002-07-27
//
BOOL CVisualStylesXP::UseVisualStyles()
{
static BOOL bUse = -1;
if( bUse != -1 )
return bUse;
HINSTANCE hinstDll;
DLLVERSIONINFO dvi;
ZeroMemory(&dvi, sizeof(dvi));
hinstDll = LoadLibrary(TEXT("comctl32.dll"));
if(hinstDll)
{
DLLGETVERSIONPROC pDllGetVersion;
pDllGetVersion = (DLLGETVERSIONPROC) GetProcAddress(hinstDll, "DllGetVersion");
if(pDllGetVersion)
{
ZeroMemory(&dvi, sizeof(dvi));
dvi.cbSize = sizeof(dvi);
(*pDllGetVersion)(&dvi);
}
FreeLibrary(hinstDll);
}
if( dvi.dwMajorVersion == 6 && dvi.dwMinorVersion == 0 )
{
//+++
//WCHAR szName [256];
//WCHAR szColor [256];
TCHAR szName [256];
TCHAR szColor [256];
if (!GetCurrentThemeName(szName, 255, szColor, 255, NULL, 0))
{
CString strWinXPThemeColor = szColor;
if (strWinXPThemeColor.CompareNoCase (_T("normalcolor")) == 0 ||
strWinXPThemeColor.CompareNoCase (_T("homestead")) == 0 ||
strWinXPThemeColor.CompareNoCase (_T("metallic")) == 0)
{
bUse = TRUE;
return IsAppThemed() && m_hThemeDll; // No need to test HTHEME, but...
}
}
}
bUse = FALSE;
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -