XTPOffice2007Image.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:5k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPOffice2007Image.h: interface for the CXTPOffice2007Image class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPOFFICE2007IMAGE_H__)
  22. #define __XTPOFFICE2007IMAGE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //{{AFX_CODEJOCK_PRIVATE
  28. #include "Common/XTPSystemHelpers.h"
  29. // Private image wrappers:
  30. #define XTP_DI_COMPOSITE 1
  31. class CXTPOffice2007Images;
  32. class CXTPOffice2007ImageList;
  33. class CXTPNotifyConnection;
  34. class _XTP_EXT_CLASS CXTPOffice2007Image : public CXTPCmdTarget
  35. {
  36. public:
  37. CXTPOffice2007Image(CXTPOffice2007Images* pImages);
  38. virtual ~CXTPOffice2007Image();
  39. public:
  40. BOOL LoadFile(HMODULE hModule, LPCTSTR lpszBitmapFileName);
  41. void SetBitmap(HBITMAP hBitmap, BOOL bAlpha = FALSE);
  42. void DrawImage(CDC* pDC, const CRect& rcDest, CRect rcSrc, const CRect& rcSizingMargins, COLORREF clrTransparent, DWORD dwFlags);
  43. void DrawImage(CDC* pDC, const CRect& rcDest, CRect rcSrc, const CRect& rcSizingMargins, COLORREF clrTransparent);
  44. void DrawImage(CDC* pDC, const CRect& rcDest, CRect rcSrc, CRect rcSizingMargins);
  45. void DrawImage(CDC* pDC, const CRect& rcDest, CRect rcSrc);
  46. int GetHeight() const;
  47. int GetWidth() const;
  48. CSize GetExtent() const;
  49. BOOL IsAlphaImage() const;
  50. void PreserveOrientation() {
  51. m_bImageOrientaionPreserved = TRUE;
  52. }
  53. CRect GetSource(int nState = 0, int nCount = 1) const;
  54. BOOL GetBitmapPixel(CPoint pt, COLORREF& clrPixel);
  55. void Premultiply();
  56. protected:
  57. BOOL DrawImagePart(CDC* pDCDest, CRect rcDest,
  58. CDC* pDCSrc, CRect rcSrc) const;
  59. BOOL DrawImageTile(CDC* pDCDest, const CRect& rcDest,
  60. CDC* pDCSrc, const CRect& rcSrc, BOOL bTile) const;
  61. void InvertBitmap();
  62. BOOL ConvertToBits(HBITMAP hBitmap);
  63. protected:
  64. LPVOID m_pBits;
  65. BOOL m_bAlpha;
  66. BOOL m_bMultiply;
  67. BOOL m_bImageOrientaionPreserved;
  68. BOOL m_bInvert;
  69. CSize m_szExtent;
  70. CXTPOffice2007Images* m_pImages;
  71. friend class CXTPOffice2007Images;
  72. friend class CXTPOffice2007ImageList;
  73. };
  74. class _XTP_EXT_CLASS CXTPOffice2007Images : public CXTPCmdTarget
  75. {
  76. private:
  77. class CBitmapDC : public CDC
  78. {
  79. public:
  80. CBitmapDC()
  81. {
  82. m_hOldBitmap = 0;
  83. }
  84. ~CBitmapDC()
  85. {
  86. if (m_hOldBitmap)
  87. {
  88. ::SelectObject(GetSafeHdc(), m_hOldBitmap);
  89. }
  90. }
  91. void SetBitmap(HBITMAP hBitmap)
  92. {
  93. if (hBitmap)
  94. {
  95. m_hOldBitmap = (HBITMAP)::SelectObject(GetSafeHdc(), hBitmap);
  96. }
  97. else if (m_hOldBitmap)
  98. {
  99. ::SelectObject(GetSafeHdc(), m_hOldBitmap);
  100. m_hOldBitmap = NULL;
  101. }
  102. }
  103. HBITMAP m_hOldBitmap;
  104. };
  105. public:
  106. CXTPOffice2007Images();
  107. ~CXTPOffice2007Images();
  108. public:
  109. void RemoveAll();
  110. CXTPOffice2007Image* LoadFile(LPCTSTR lpszImageFile);
  111. BOOL SetHandle(HMODULE hResource, LPCTSTR lpszIniFileName = NULL, BOOL bFreeOnRelease = FALSE);
  112. BOOL SetHandle(LPCTSTR lpszFile, LPCTSTR lpszIniFileName = NULL);
  113. BOOL InitResourceHandle(LPCTSTR lpszTestImageFile, LPCTSTR lpResType = RT_BITMAP);
  114. COLORREF GetImageColor(CString strSectionName, CString strKeyName);
  115. CString GetImageString(CString strSectionName, CString strKeyName);
  116. CString GetImageValue(CString strSectionName, CString strKeyName);
  117. BOOL IsValid() const;
  118. CXTPNotifyConnection* GetConnection();
  119. CString m_strHandle;
  120. protected:
  121. CXTPOffice2007Image* LoadImage(CString strImageFile);
  122. CString _ImageNameToResourceName(CString strImageFile);
  123. private:
  124. void RefreshSettings();
  125. BOOL ReadString(CString& str, LPSTR& lpTextFile);
  126. static BOOL CALLBACK EnumResNameProc(HMODULE hModule,
  127. LPCTSTR lpszType, LPTSTR lpszName, LONG_PTR lParam);
  128. HRSRC FindResourceIniFile(HMODULE hResource);
  129. protected:
  130. HMODULE m_hResource;
  131. LPSTR m_lpTextFile;
  132. LPSTR m_lpTextFileEnd;
  133. BOOL m_bFreeOnRelease;
  134. CRITICAL_SECTION m_cs;
  135. CBitmapDC m_dc;
  136. HBITMAP m_hbmLayer;
  137. LPDWORD m_pLayerBits;
  138. CXTPNotifyConnection* m_pConnection;
  139. protected:
  140. CMapStringToPtr m_mapImages;
  141. friend class CXTPOffice2007Image;
  142. };
  143. class _XTP_EXT_CLASS CXTPOffice2007ImageList : public CXTPOffice2007Images
  144. {
  145. DECLARE_DYNCREATE(CXTPOffice2007ImageList)
  146. friend class CXTPOffice2007Image;
  147. public:
  148. CXTPOffice2007ImageList();
  149. virtual ~CXTPOffice2007ImageList();
  150. CXTPOffice2007Image* GetBitmap(UINT nID);
  151. CXTPOffice2007Image* SetBitmap(HBITMAP hBitmap, UINT nID, BOOL bAlptha, BOOL bCopyBitmap = TRUE);
  152. BOOL SetBitmap(CXTPOffice2007Image* pImage, UINT nID, BOOL bCallAddRef);
  153. BOOL LoadBitmap(LPCTSTR lpcszPath, UINT nID);
  154. BOOL Remove(UINT nID);
  155. void RemoveAll();
  156. protected:
  157. CMap<UINT, UINT, CXTPOffice2007Image*, CXTPOffice2007Image*> m_mapID2Image;
  158. protected:
  159. };
  160. _XTP_EXT_CLASS CXTPOffice2007Images* AFX_CDECL XTPOffice2007Images();
  161. //}}AFX_CODEJOCK_PRIVATE
  162. #endif // !defined(__XTPOFFICE2007IMAGE_H__)