普通Application中添加资源出错
我尝试用一个Application应用程序来释放一个其他文件,思路这样的:主释放文件是A,被释放文件是B;在编写A时,把完整的B文件作为资源添加到A的资源中,也就是在编写环境中插入资源,但是执行结果总是资源的句柄为NULL,我用MFC就能实现,不知道为什么?代码如下:
#include "Windows.h"
#include "resource.h"
BOOL ReleaseRes(char * strFileName,char *lpName,LPCTSTR lpType,HINSTANCE hInstance);
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
if(FALSE==ReleaseRes("d.dll","testDll.dll","dll",hInstance))
{
MessageBox(0,"释放失败","提示",MB_OK);
return 0;
}
}
BOOL ReleaseRes(char * strFileName,char *lpName,LPCTSTR lpType,HINSTANCE hInstance)
{
// 资源大小
DWORD dwWrite=0;
// 创建文件
HANDLE hFile = CreateFile(strFileName, GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if ( hFile == INVALID_HANDLE_VALUE )
{
return FALSE;
}
// 查找资源文件中、加载资源到内存、得到资源大小
HRSRC hrsc=::FindResource(hInstance, lpName, lpType);
if(hrsc==NULL)
MessageBox(0,"资源句柄无效","句柄",MB_OK);这里总是能弹出
HGLOBAL hG = LoadResource(NULL,hrsc);
DWORD dwSize = SizeofResource( NULL,hrsc);
// 写入文件
WriteFile(hFile,hG,dwSize,&dwWrite,NULL);
CloseHandle( hFile );
return TRUE;
}
请高手指点,呵呵