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

菜单

开发平台:

WINDOWS

  1. // SkinIniGlobalsFileData.h
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_SKINGLOBALSDATA_H__6E42348F_E57E_41AE_961F_549E69516E9F__INCLUDED_)
  5. #define AFX_SKINGLOBALSDATA_H__6E42348F_E57E_41AE_961F_549E69516E9F__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <afxtempl.h>
  10. #include "skinbase.h"
  11. // for controls that can support 'hot cold and down' buttons.
  12. // eg. buttons, headers, scrollbars, comboboxes, spinbuttons
  13. enum 
  14. {
  15. SKCB_BUTTONLEFT,
  16. SKCB_BUTTONRIGHT,
  17. SKCB_BUTTONMIDDLE,
  18. SKCB_BUTTONCLIPLEFT,
  19. SKCB_BUTTONCLIPRIGHT,
  20. SKCB_HEADERLEFT,
  21. SKCB_HEADERRIGHT,
  22. SKCB_HEADERMIDDLE,
  23. SKCB_HEADERLEFTEND,
  24. SKCB_HEADERRIGHTEND,
  25. SKCB_SCROLLALL, // if this is specified then its assumed for SKCB_SPINxxx also
  26. SKCB_SCROLLLEFT,
  27. SKCB_SCROLLRIGHT,
  28. SKCB_SCROLLDOWN,
  29. SKCB_SCROLLUP,
  30. SKCB_SCROLLDROPDOWN, // for anything that needs a dropdown
  31. SKCB_SPINLEFT, // also used for clipped scrollbars
  32. SKCB_SPINRIGHT,
  33. SKCB_SPINDOWN,
  34. SKCB_SPINUP,
  35. SKCB_TREEPLUS,
  36. SKCB_TREEMINUS,
  37. SKCB_TREEALL,
  38. SKCB_SLIDERTHUMBHORZ,
  39. SKCB_SLIDERTHUMBVERT,
  40. SKCB_PROGRESSLEFT,
  41. SKCB_PROGRESSRIGHT,
  42. SKCB_PROGRESSMIDDLE,
  43. SKCB_LAST
  44. };
  45. //////////////////////////////////////////////////////////////////////////////////
  46. class CSkinBitmap
  47. {
  48. public:
  49. CSkinBitmap() { Reset(); }
  50. CSkinBitmap(const CSkinBitmap& ski) { *this = ski; }
  51. CSkinBitmap(const CBitmap bitmap[IM_HOT], COLORREF mask = -1)
  52. {
  53. Reset();
  54. for (int nIm = IM_HOT; nIm < IM_LAST; nIm++)
  55. {
  56. if (bitmap[nIm].GetSafeHandle())
  57. CSkinBase::CopyBitmap(&bitmap[nIm], &bmImage[nIm]);
  58. }
  59. crMask = mask;
  60. }
  61. virtual ~CSkinBitmap() { Reset(); }
  62. const CSkinBitmap& CSkinBitmap::operator=(const CSkinBitmap& ski)
  63. {
  64. Reset();
  65. for (int nIm = IM_HOT; nIm < IM_LAST; nIm++)
  66. {
  67. if (ski.bmImage[nIm].GetSafeHandle())
  68. CSkinBase::CopyBitmap(&ski.bmImage[nIm], &bmImage[nIm]);
  69. }
  70. crMask = ski.crMask;
  71. return *this;
  72. }
  73. virtual void Reset() 
  74. for (int nIm = IM_HOT; nIm < IM_LAST; nIm++) 
  75. bmImage[nIm].DeleteObject(); 
  76. crMask = (COLORREF)-1; 
  77. }
  78. CBitmap* Images() { return bmImage; }
  79. CBitmap* Image(int nIm, BOOL bWrap = TRUE)
  80. ASSERT (nIm >= IM_HOT && nIm < IM_LAST);
  81. if (!bWrap || bmImage[nIm].GetSafeHandle())
  82. return &bmImage[nIm]; 
  83. else
  84. return &bmImage[IM_HOT];
  85. }
  86. BOOL IsValid(int nIm = IM_HOT) const
  87. ASSERT (nIm >= IM_HOT && nIm < IM_LAST);
  88. return (bmImage[nIm].GetSafeHandle() != NULL);
  89. }
  90. COLORREF crMask;
  91. protected:
  92. CBitmap bmImage[IM_LAST];
  93. };
  94. //////////////////////////////////////////////////////////////////////////////////
  95. class CSkinSound
  96. {
  97. public:
  98. CSkinSound() { Reset(); }
  99. CSkinSound(const CSkinSound& ski) { *this = ski; }
  100. virtual ~CSkinSound() { Reset(); }
  101. const CSkinSound& CSkinSound::operator=(const CSkinSound& ski)
  102. {
  103. for (int nIm = 0; nIm < SND_LAST; nIm++)
  104. sSoundPath[nIm] = ski.sSoundPath[nIm];
  105. return *this;
  106. }
  107. virtual void Reset() 
  108. for (int nSnd = 0; nSnd < SND_LAST; nSnd++) 
  109. sSoundPath[nSnd].Empty(); 
  110. }
  111. void Merge(const CSkinSound& ski) // merge only non empty items
  112. {
  113. int nSound = SND_LAST;
  114. while (nSound--)
  115. {
  116. if (sSoundPath[nSound].IsEmpty())
  117. sSoundPath[nSound] = ski.sSoundPath[nSound];
  118. }
  119. }
  120. CString sSoundPath[SND_LAST];
  121. };
  122. //////////////////////////////////////////////////////////////////////////////////
  123. class CSkinFont
  124. {
  125. public:
  126. CSkinFont() { Reset(); }
  127. CSkinFont(const CSkinFont& ski) { *this = ski; }
  128. virtual ~CSkinFont() { Reset(); }
  129. const CSkinFont& CSkinFont::operator=(const CSkinFont& ski)
  130. {
  131. aFonts.Copy(ski.aFonts);
  132. return *this;
  133. }
  134. virtual void Reset() 
  135. aFonts.RemoveAll();
  136. }
  137. CArray<FontInfo, FontInfo&> aFonts; // in order 
  138. };
  139. //////////////////////////////////////////////////////////////////////////////////
  140. #endif