注册 登录
编程论坛 VC++/MFC

普通Application中添加资源出错

xinworld123 发布于 2012-04-23 22:27, 398 次点击
我尝试用一个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;   
}  
请高手指点,呵呵
1 回复
#2
xinworld1232012-04-24 19:37
怎么一个人恢复都没有啊,,,,,,,,,,,,
1