很多时候我们的应用程序需要配置文件,而配置文件经常会被遗忘而导致程序无法运行。
现在我们有更好的办法来保存配置文件了,方法即为将配置文件以资源的方式添加至MFC中,在程序初始化时将资源释放至指定目录下即可,释放的过程就是将一块内存中的数据写至文件中。
代码借用别人的,来源看雪论坛。
// 前不久大家都在讨论怎样通过一个程序来生成另一个程序,我提出了将另一个程序当资源文件包含在程序中一起编译,然后在程序运行时根据需要再重新生成出来,下面是我的一个例子, 在这里,我将windows自带的写字板(writer.exe)当资源.
//
// 下面是源代码
//资源文件writer.exe长度为204800,在资源文件中定义为"CUSTOM"资源,编号为1111
HRSRC hMyRes; //resource handle
HGLOBAL hgpt; //resource pointer
LPVOID lpBuff; //resource buffer pointer
DWORD rcSize=204800; //resource size
HANDLE hFile;//file to write
LPDWORD dwByte;//byte size had been write
dwByte=&rcSize; //locate the resource and load the resource to memory and lock it
hMyRes=FindResource((HMODULE)GetWindowLong(Handle,GWL_HINSTANCE),MAKEINTRESOURCE(1111),"CUSTOM");
//可动态取资源的长度
rcSize = SizeofResource(GetModuleHandle(NULL),hMyRes);
if(hMyRes==NULL)
// ShowMessage(SysErrorMessage(GetLastError()));
//此处句柄所指取为资源的地址
hgpt=LoadResource(NULL,hMyRes);
if(hgpt==NULL)
// ShowMessage(SysErrorMessage(GetLastError()));
//此处锁定,为保证资源的准确性
lpBuff=LockResource(hgpt);
//now i will read the resource and write it to an file
try
{
hFile=CreateFile("e:\\mywriter.exe",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
WriteFile(hFile,lpBuff,rcSize,dwByte,NULL);
if(*dwByte!=204800)
// ShowMessage("Failed to write to file");
}
__finally
{
CloseHandle(hFile);
}