vs c++如何获取资源文件中资源的完整路径

在资源头文件 resource.h 中定义里 bitmap1.bmp 的ID ,是否有办法通过该ID获取到该资源的完整路径

img

唯一方法,只能是把资源文件释放到系统,比较好的方法是释放到系统的临时目录。下面是代码:CHAR pTempFileName[MAX_PATH];// 参数1:资源ID// 参数2:资源名称// 参数3:释放到临时目录的资源名称,也就是文件名BOOL ReleaseResourceToTempPath(int iResId, LPCWSTR lpType, LPCSTR lpFileName){DWORD dwSize;HGLOBAL hGlobal;LPVOID lpBuffer;HRSRC hRes = ::FindResourceW(NULL, MAKEINTRESOURCE(iResId), lpType);if (hRes){hGlobal = ::LoadResource(NULL, hRes);dwSize = ::SizeofResource(NULL, hRes);if (hGlobal && dwSize){lpBuffer = ::LockResource(hGlobal);if (lpBuffer){GetTempPathA(MAX_PATH, pTempFileName);strcat_s(pTempFileName, sizeof(pTempFileName), lpFileName);FILE* fp;fopen_s(&fp, pTempFileName, "wb");if (dwSize == fwrite(lpBuffer, sizeof(char), dwSize, fp)){fclose(fp);return TRUE;}else{fclose(fp);}}}}return FALSE;}调用格式:ReleaseResourceToTempPath(IDR_SKIN_DLL, L"SKIN", "skinpp.dll");ReleaseResourceToTempPath(IDR_SKIN_DOGMAX_SSK, L"SKIN", "dogmax.ssk");由于我工程采用的是UNICODE编码,所以如果你用ASCII的话,有些你地方你需要修改一下。

没有!因为资源的路径只是对于资源编译器有意义,并不会写入exe文件中。运行时自然也就获取不了了。

  • 这篇博客: C++数字图像处理-bmp格式图像读写中的 2.位图信息头(Bitmap Info Header),大小:40字节 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •     主要包括:位图的宽度和高度,像素为单位、每个像素所占位数(1黑白图像),(4-16色图)、(8-256色图)、(24-真彩色图),新的BMP格式可以支持32位色。 还有其它水平和垂直分辨力(单位:像素/米)等