SkinMenuMgr.h
上传用户:weijiexitu
上传日期:2007-01-18
资源大小:54k
文件大小:2k
源码类别:

菜单

开发平台:

WINDOWS

  1. // SkinMenuMgr.h: interface for the CSkinMenuMgr class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_SKINMENUMGR_H__05F14DDA_161A_4291_B43A_4F5064081EED__INCLUDED_)
  5. #define AFX_SKINMENUMGR_H__05F14DDA_161A_4291_B43A_4F5064081EED__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "skinmenu.h"
  10. #include "SkinGlobals.h"
  11. #include "hookmgr.h"
  12. #include <afxtempl.h>
  13. #ifndef NO_SKIN_INI
  14. class CSkinIniGlobalsFile;
  15. #endif
  16. // pure static class
  17. class CSkinMenuMgr : protected CHookMgr<CSkinMenuMgr>
  18. {
  19. friend class CHookMgr<CSkinMenuMgr>; // to allow access to protected c'tor
  20. public:
  21. virtual ~CSkinMenuMgr();
  22. static BOOL Initialize(DWORD dwMenuStyle = SKMS_SIDEBAR | SKMS_FLAT, int nSBWidth = 10, BOOL bNotXP = TRUE);
  23. static void SetColor(int nColor, COLORREF color);
  24. static COLORREF GetColor(int nColor);
  25. static void ClearColors();
  26. #ifndef NO_SKIN_INI
  27. static BOOL LoadSkin(const CSkinIniGlobalsFile* pIniFile);
  28. static void UnloadSkin();
  29. #endif
  30. protected:
  31. CMap<HWND, HWND, CSkinMenu*, CSkinMenu*&> m_mapMenus;
  32. DWORD m_dwMenuStyle;
  33. CSkinGlobals m_skGlobals;
  34. int m_nSidebarWidth;
  35. CSkinMenu* m_pCurSkinMenu;
  36. HWND m_hCurContextWnd;
  37. HMENU m_hCurMenu;
  38. protected:
  39. CSkinMenuMgr();
  40. // message handlers
  41. virtual void OnCallWndProc(const MSG& msg);
  42. virtual BOOL OnCbt(int nCode, WPARAM wParam, LPARAM lParam);
  43. CSkinMenu* GetSkinMenu(HWND hWnd);
  44. BOOL Skin(HWND hWnd); 
  45. BOOL Unskin(HWND hWnd);
  46. CSkinMenu* GetParentSkinMenu(HMENU hMenu);
  47. void Release();
  48. };
  49. #endif // !defined(AFX_SkinMenuMgr_H__05F14DDA_161A_4291_B43A_4F5064081EED__INCLUDED_)