可以将txt等文件内容生成MFC资源,封装到程序中
bool Normal_Distribution::BuildGB3755Resourse(std::vector<wchar_t>& vecGB3755_out)
{/建立资源
//-1-open
vecGB3755_out.clear();
CString strFilePath=_T("D:\\cy\\project\\Garbled\\BuildFontImageLibrary\\GB_3755.txt");
CFileException ex;
CFile FileOpen;
if( !FileOpen.Open( strFilePath,CFile::modeReadWrite,&ex ) )
{
TRACE(_T("%s Write file ERROR!!\n"),strFilePath);
return false;
}
//
ULONGLONG nLen = FileOpen.GetLength();
int n=0;
while(n<nLen)
{
wchar_t wchTempt;
FileOpen.Read((char *)(&wchTempt), 2);
if(wchTempt==65279||wchTempt==12288||wchTempt==32||wchTempt==160||wchTempt==13||wchTempt==10)
{
n +=2;
continue;
}//if
65279:Unicode文件头:,12288:空格,13:回车、160:结尾
vecGB3755_out.push_back(wchTempt);
n +=2;
}//while
FileOpen.Close();
//
-2-save
CString strFilePathsave=_T("D:\\cy\\project\\Garbled\\GrabledDetection\\GB3755.cy");
CFile FileSave;
int nLenn = sizeof(wchar_t)*vecGB3755_out.size();
FileSave.Open( strFilePathsave,CFile::modeCreate|CFile::modeReadWrite,&ex );
FileSave.Write(&(vecGB3755_out[0]),nLenn);
FileSave.Close();
//
return true;
}
加载资源
bool Normal_Distribution::GetGB3755(std::vector<wchar_t>& vecGB3755_out)
{
HMODULE hResInst = GetModuleHandle(L"GrabledDetection.dll"); //dll资源
HRSRC hResSrc = ::FindResource(hResInst, MAKEINTRESOURCE(IDR_GB_37551),_T("GB_3755"));//资源名称和类型
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// HINSTANCE hResInst = AfxGetResourceHandle();
//CString strName =_T("IDR_GB_37551");
//HRSRC hResSrc = ::FindResource(hResInst,strName, _T("GB_3755") );
if( hResSrc==NULL )
{
int ierr = GetLastError();
return false;
}
DWORD dwResSize = ::SizeofResource(hResInst,hResSrc );
ASSERT(dwResSize ==sizeof(wchar_t)*3755);
HGLOBAL hResData = ::LoadResource(hResInst,hResSrc );
if( hResData==0 )
return false;
//
vecGB3755_out.resize(3755);
LPBYTE pBuf =(LPBYTE)&(vecGB3755_out[0]);
memcpy( pBuf,::LockResource( hResData ),dwResSize );
::FreeResource( hResData );
//
return true;
}