#ifndef _IMAGE_IMAGERESOURCEDIRSTRING_HPP_ #define _IMAGE_IMAGERESOURCEDIRSTRING_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_PUREVIEWOFFILE_HPP_ #include #endif #ifndef _COMMON_WINNLS_HPP_ #include #endif class ImageResourceDirString : private IMAGE_RESOURCE_DIR_STRING_U { public: ImageResourceDirString(void); virtual ~ImageResourceDirString(); operator IMAGE_RESOURCE_DIR_STRING_U &(void); String name(void)const; void read(PureViewOfFile &pureView); private: WORD length(void)const; ImageResourceDirString(const ImageResourceDirString &someImageResourceDirString); ImageResourceDirString &operator=(const ImageResourceDirString &imageResourceDirString); void zeroInit(void); String mResourceName; }; inline ImageResourceDirString::ImageResourceDirString(void) { zeroInit(); } inline ImageResourceDirString::ImageResourceDirString(const ImageResourceDirString &someImageResourceDirString) { *this=someImageResourceDirString; } inline ImageResourceDirString::~ImageResourceDirString() { } inline ImageResourceDirString &ImageResourceDirString::operator=(const ImageResourceDirString &/*imageResourceDirString*/) { return *this; } inline ImageResourceDirString::operator IMAGE_RESOURCE_DIR_STRING_U &(void) { return *this; } inline WORD ImageResourceDirString::length(void)const { return IMAGE_RESOURCE_DIR_STRING_U::Length; } inline String ImageResourceDirString::name(void)const { return mResourceName; } inline void ImageResourceDirString::read(PureViewOfFile &pureView) { WCHAR wszBuffer[String::MaxString]; pureView.push(); ::memset(wszBuffer,0,sizeof(wszBuffer)); mResourceName.reserve(String::MaxString); pureView.read((char*)&((IMAGE_RESOURCE_DIR_STRING_U&)*this),sizeof(IMAGE_RESOURCE_DIR_STRING_U)); wszBuffer[0]=IMAGE_RESOURCE_DIR_STRING_U::NameString[0]; pureView.read((char*)(wszBuffer+1),length()*sizeof(WCHAR)); ::WideCharToMultiByte(CP_ACP,0,wszBuffer,IMAGE_RESOURCE_DIR_STRING_U::Length,(LPSTR)mResourceName,String::MaxString,0,0); pureView.pop(); } inline void ImageResourceDirString::zeroInit(void) { IMAGE_RESOURCE_DIR_STRING_U::Length=0; IMAGE_RESOURCE_DIR_STRING_U::NameString[0]=0; } #endif