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

对话框与窗口

开发平台:

Visual C++

  1. // SkinManagerExtResourceFile.cpp: implementation of the CSkinManagerExtResourceFile class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "SkinSDISample.h"
  6. #include "SkinManagerExtResourceFile.h"
  7. #ifdef _DEBUG
  8. #undef THIS_FILE
  9. static char THIS_FILE[]=__FILE__;
  10. #define new DEBUG_NEW
  11. #endif
  12. //////////////////////////////////////////////////////////////////////
  13. // Construction/Destruction
  14. //////////////////////////////////////////////////////////////////////
  15. CSkinManagerExtResourceFile::CSkinManagerExtResourceFile()
  16. {
  17. m_pIniFile = NULL;
  18. }
  19. CSkinManagerExtResourceFile::~CSkinManagerExtResourceFile()
  20. {
  21. Close();
  22. }
  23. BOOL CSkinManagerExtResourceFile::Open(LPCTSTR lpszResourcePath, LPCTSTR lpszIniFileName)
  24. {
  25. Close();
  26. m_strResourcePath = lpszResourcePath;
  27. m_strIniFileName = lpszIniFileName;
  28. CString strFileName = m_strResourcePath + _T('\') + m_strIniFileName;
  29. m_pIniFile = new CStdioFile;
  30. if (!m_pIniFile->Open(strFileName, CFile::modeRead))
  31. {
  32. SAFE_DELETE(m_pIniFile);
  33. return FALSE;
  34. }
  35. return TRUE;
  36. }
  37. BOOL CSkinManagerExtResourceFile::ReadString(CString& str)
  38. {
  39. if (!m_pIniFile)
  40. return FALSE;
  41. if (!m_pIniFile->ReadString(str))
  42. {
  43. SAFE_DELETE(m_pIniFile);
  44. return FALSE;
  45. }
  46. return TRUE;
  47. }
  48. void CSkinManagerExtResourceFile::Close()
  49. {
  50. SAFE_DELETE(m_pIniFile);
  51. }
  52. CXTPSkinImage* CSkinManagerExtResourceFile::LoadImage(CString strImageFile)
  53. {
  54. USES_CONVERSION;
  55. strImageFile = m_strResourcePath + _T('\') + strImageFile;
  56. if (!FILEEXISTS_S(strImageFile))
  57. return NULL;
  58. BOOL bAlpha;
  59. HBITMAP hBitmap = NULL;
  60. hBitmap = CXTPImageManagerIcon::LoadBitmapFromFile(strImageFile, &bAlpha);
  61. if (!hBitmap)
  62. return NULL;
  63. CXTPSkinImage* pImage = new CXTPSkinImage;
  64. if (bAlpha)
  65. {
  66. HBITMAP hBitmapAlpha = CXTPImageManagerIcon::PreMultiplyAlphaBitmap(hBitmap);
  67. pImage->SetBitmap(hBitmapAlpha, TRUE);
  68. DeleteObject(hBitmap);
  69. }
  70. else 
  71. {
  72. pImage->SetBitmap(hBitmap);
  73. }
  74. return pImage;
  75. }