ThemeHelperST.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:3k
源码类别:

CA认证

开发平台:

Visual C++

  1. //
  2. // Class: CThemeHelperST
  3. //
  4. // Compiler: Visual C++
  5. // Tested on: Visual C++ 6.0
  6. //
  7. // Version: See GetVersionC() or GetVersionI()
  8. //
  9. // Created: 09/January/2002
  10. // Updated: 31/October/2002
  11. //
  12. // Author: Davide Calabro' davide_calabro@yahoo.com
  13. // http://www.softechsoftware.it
  14. //
  15. // Note: Based on the CVisualStylesXP code 
  16. // published by David Yuheng Zhao (yuheng_zhao@yahoo.com)
  17. //
  18. // Disclaimer
  19. // ----------
  20. // THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT
  21. // ANY WARRANTIES WHETHER EXPRESSED OR IMPLIED. NO REPONSIBILITIES FOR POSSIBLE
  22. // DAMAGES OR EVEN FUNCTIONALITY CAN BE TAKEN. THE USER MUST ASSUME THE ENTIRE
  23. // RISK OF USING THIS SOFTWARE.
  24. //
  25. // Terms of use
  26. // ------------
  27. // THIS SOFTWARE IS FREE FOR PERSONAL USE OR FREEWARE APPLICATIONS.
  28. // IF YOU USE THIS SOFTWARE IN COMMERCIAL OR SHAREWARE APPLICATIONS YOU
  29. // ARE GENTLY ASKED TO DONATE 5$ (FIVE U.S. DOLLARS) TO THE AUTHOR:
  30. //
  31. // Davide Calabro'
  32. // P.O. Box 65
  33. // 21019 Somma Lombardo (VA)
  34. // Italy
  35. //
  36. #ifndef _THEMEHELPERST_H_
  37. #define _THEMEHELPERST_H_
  38. #if _MSC_VER > 1000
  39. #pragma once
  40. #endif // _MSC_VER > 1000
  41. #ifndef HTHEME
  42. #define HTHEME HANDLE
  43. #endif
  44. class CThemeHelperST  
  45. {
  46. public:
  47. CThemeHelperST();
  48. virtual ~CThemeHelperST();
  49. //new 
  50. // typedef HRESULT(__stdcall *PFNDRAWTHEMEPARENTBACKGROUND)(HWND hwnd,HDC hdc,RECT *prc);
  51. HTHEME OpenThemeData(HWND hwnd, LPCWSTR pszClassList);
  52. HRESULT CloseThemeData(HTHEME hTheme);
  53. HRESULT DrawThemeBackground(HTHEME hTheme, HWND hWnd, HDC hdc, int iPartId, int iStateId, const RECT* pRect, const RECT* pClipRect);
  54. HRESULT DrawThemeText(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, LPCWSTR pszText, int iCharCount, DWORD dwTextFlags, DWORD dwTextFlags2, const RECT* pRect);
  55. BOOL IsThemeActive();
  56. BOOL IsAppThemed();
  57. static short GetVersionI() {return 11;}
  58. static LPCTSTR GetVersionC() {return (LPCTSTR)_T("1.1");}
  59. private:
  60. LPVOID GetProc(LPCSTR szProc, LPVOID pfnFail);
  61. typedef HTHEME(__stdcall *PFNOPENTHEMEDATA)(HWND hwnd, LPCWSTR pszClassList);
  62. static HTHEME __stdcall OpenThemeDataFail(HWND, LPCWSTR) {return NULL;}
  63. typedef HRESULT(__stdcall *PFNCLOSETHEMEDATA)(HTHEME hTheme);
  64. static HRESULT __stdcall CloseThemeDataFail(HTHEME) {return E_FAIL;}
  65. typedef HRESULT(__stdcall *PFNDRAWTHEMEBACKGROUND)(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT* pRect,  const RECT* pClipRect);
  66. static HRESULT __stdcall DrawThemeBackgroundFail(HTHEME, HDC, int, int, const RECT*, const RECT*) {return E_FAIL;}
  67. typedef HRESULT(__stdcall *PFNDRAWTHEMEPARENTBACKGROUND)(HWND hWnd, HDC hdc, RECT* pRect);
  68. typedef HRESULT (__stdcall *PFNDRAWTHEMETEXT)(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, LPCWSTR pszText, int iCharCount, DWORD dwTextFlags, DWORD dwTextFlags2, const RECT* pRect);
  69. static HRESULT __stdcall DrawThemeTextFail(HTHEME, HDC, int, int, LPCWSTR, int, DWORD, DWORD, const RECT*) {return E_FAIL;}
  70. typedef BOOL(__stdcall *PFNISAPPTHEMED)();
  71. static BOOL __stdcall IsAppThemedFail() {return FALSE;}
  72. typedef BOOL (__stdcall *PFNISTHEMEACTIVE)();
  73. static BOOL __stdcall IsThemeActiveFail() {return FALSE;}
  74. HMODULE m_hDll;
  75. };
  76. #endif