95 lines
2.3 KiB
C++
95 lines
2.3 KiB
C++
#ifndef _IMAGE_IMAGERESOURCEDIRSTRING_HPP_
|
|
#define _IMAGE_IMAGERESOURCEDIRSTRING_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _COMMON_PUREVIEWOFFILE_HPP_
|
|
#include <common/pview.hpp>
|
|
#endif
|
|
#ifndef _COMMON_WINNLS_HPP_
|
|
#include <common/winnls.hpp>
|
|
#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
|