////////////////////////////////////////////////////////////////////////// // File Name: sresprovider.h // Description: Resource Provider ////////////////////////////////////////////////////////////////////////// #pragma once #include "interface/SResProvider-i.h" #include #include namespace SOUI { //定义3种系统资源类型 extern const TCHAR KTypeBitmap[]; extern const TCHAR KTypeCursor[]; extern const TCHAR KTypeIcon[]; extern const TCHAR KTypeHtml[]; class SOUI_EXP SResLoadFromMemory { public: static IBitmap * LoadImage(LPVOID pBuf,size_t size); static IImgX * LoadImgX(LPVOID pBuf,size_t size); }; class SResProviderPE:public TObjRefImpl { public: SResProviderPE(); BOOL Init(WPARAM wParam,LPARAM lParam); HBITMAP LoadBitmap(LPCTSTR pszResName); HICON LoadIcon(LPCTSTR pszResName,int cx=0,int cy=0); HCURSOR LoadCursor(LPCTSTR pszResName); IBitmap * LoadImage(LPCTSTR strType,LPCTSTR pszResName); IImgX * LoadImgX(LPCTSTR strType,LPCTSTR pszResName); BOOL GetRawBuffer(LPCTSTR strType,LPCTSTR pszResName,LPVOID pBuf,size_t size); BOOL HasResource(LPCTSTR strType,LPCTSTR pszResName); size_t GetRawBufferSize(LPCTSTR strType,LPCTSTR pszResName); LPVOID GetRawBufferPtr(LPCTSTR strType,LPCTSTR pszResName); #ifdef _DEBUG virtual void CheckResUsage(const SMap & mapResUsage); #endif protected: HRSRC MyFindResource(LPCTSTR strType, LPCTSTR pszResName ); HINSTANCE m_hResInst; }; class SOUI_EXP SResLoadFromFile { public: static HBITMAP LoadBitmap(LPCTSTR pszFileName); static HICON LoadIcon(LPCTSTR pszFileName,int cx=0,int cy=0); static HCURSOR LoadCursor(LPCTSTR pszFileName); static IBitmap * LoadImage(LPCTSTR pszFileName); static IImgX * LoadImgX(LPCTSTR pszFileName); static size_t GetRawBufferSize(LPCTSTR pszFileName); static BOOL GetRawBuffer(LPCTSTR pszFileName,LPVOID pBuf,size_t size); }; class SResProviderFiles:public TObjRefImpl { public: SResProviderFiles(); BOOL Init(WPARAM wParam,LPARAM lParam); BOOL HasResource(LPCTSTR strType,LPCTSTR pszResName); HBITMAP LoadBitmap(LPCTSTR pszResName); HICON LoadIcon(LPCTSTR pszResName,int cx=0,int cy=0); HCURSOR LoadCursor(LPCTSTR pszResName); IBitmap * LoadImage(LPCTSTR strType,LPCTSTR pszResName); IImgX * LoadImgX(LPCTSTR strType,LPCTSTR pszResName); size_t GetRawBufferSize(LPCTSTR strType,LPCTSTR pszResName); BOOL GetRawBuffer(LPCTSTR strType,LPCTSTR pszResName,LPVOID pBuf,size_t size); #ifdef _DEBUG void CheckResUsage(const SMap & mapResUsage); #endif protected: SStringT GetRes( LPCTSTR strType,LPCTSTR pszResName ); SStringT m_strPath; SMap m_mapFiles; }; BOOL SOUI_EXP CreateResProvider(BUILTIN_RESTYPE resType,IObjRef **pObj); }//namespace SOUI