00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "vmsTheme.h"
00008
00009 #ifdef _DEBUG
00010 #undef THIS_FILE
00011 static char THIS_FILE[]=__FILE__;
00012 #define new DEBUG_NEW
00013 #endif
00014
00015 vmsTheme::vmsTheme()
00016 {
00017 m_hThemeDLL = LoadLibrary ("UxTheme.dll");
00018
00019 if (m_hThemeDLL)
00020 {
00021 m_pfnOpenThemeData = (fntOpenThemeData)GetProcAddress (m_hThemeDLL, "OpenThemeData");
00022 m_pfnDrawThemeBackground = (fntDrawThemeBackground)GetProcAddress (m_hThemeDLL, "DrawThemeBackground");
00023 m_pfnCloseThemeData = (fntCloseThemeData)GetProcAddress (m_hThemeDLL, "CloseThemeData");
00024 m_pfnIsThemeActive = (fntIsThemeActive)GetProcAddress (m_hThemeDLL, "IsThemeActive");
00025 m_pfnSetWindowTheme = (fntSetWindowTheme)GetProcAddress (m_hThemeDLL, "SetWindowTheme");
00026 }
00027 else
00028 {
00029 m_pfnOpenThemeData = NULL;
00030 m_pfnDrawThemeBackground = NULL;
00031 m_pfnCloseThemeData = NULL;
00032 m_pfnIsThemeActive = NULL;
00033 m_pfnSetWindowTheme = NULL;
00034 }
00035 }
00036
00037 vmsTheme::~vmsTheme()
00038 {
00039 if (m_hThemeDLL)
00040 FreeLibrary (m_hThemeDLL);
00041 }
00042
00043 HTHEME vmsTheme::OpenThemeData(HWND hwnd, LPCWSTR pszClassList)
00044 {
00045 if (m_pfnOpenThemeData)
00046 return m_pfnOpenThemeData (hwnd, pszClassList);
00047 else
00048 return NULL;
00049 }
00050
00051 HRESULT vmsTheme::DrawThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect)
00052 {
00053 if (m_pfnDrawThemeBackground)
00054 return m_pfnDrawThemeBackground (hTheme, hdc, iPartId, iStateId, pRect, pClipRect);
00055 else
00056 return E_NOTIMPL;
00057 }
00058
00059 HRESULT vmsTheme::CloseThemeData(HTHEME hTheme)
00060 {
00061 if (m_pfnCloseThemeData)
00062 return m_pfnCloseThemeData (hTheme);
00063 else
00064 return E_NOTIMPL;
00065 }
00066
00067 BOOL vmsTheme::IsThemeActive()
00068 {
00069 return m_pfnIsThemeActive ? m_pfnIsThemeActive () : FALSE;
00070 }
00071
00072 HRESULT vmsTheme::SetWindowTheme(HWND hwnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList)
00073 {
00074 if (m_pfnCloseThemeData)
00075 return m_pfnSetWindowTheme (hwnd, pszSubAppName, pszSubIdList);
00076 else
00077 return E_NOTIMPL;
00078 }