【发布时间】:2016-09-02 14:01:42
【问题描述】:
Visual Studio 2015,控制台应用程序。尝试使用资源。我在资源中添加了一些 png 图像。如果我从 IDE 导出图像就可以了。现在我尝试通过 c++ 做同样的事情;代码在这里
HRSRC myResource = FindResource(NULL, MAKEINTRESOURCE(SEND_MSG_PNG), L"PNG");
if (myResource == NULL)
{
fatal("Could not locate dialog box.");
return;
}
DWORD myResourceSize = SizeofResource(NULL, myResource);
log("Resource size %d", myResourceSize);
HGLOBAL myResourceData = LoadResource(NULL, myResource);
if (myResourceData == NULL)
{
fatal("Could not load dialog box.");
return;
}
void* lpResLock = LockResource(myResourceData);
if (lpResLock == NULL)
{
fatal("Could not lock dialog box.");
return;
}
FILE *fh;
fopen_s(&fh, "d:/test2.png", "w+");
fwrite(lpResLock, myResourceSize, 1, fh);
fclose(fh);
问题从这里开始。如果我通过 IDE 导出这个文件,它是 852 字节。让我们称之为 test.png 而 test2.png 是 1041 字节。我在 HEX 编辑器中打开了这两个文件。前 5 个字节是相同的 89 50 4E 47 0D。问题是所有观众都说 test2.png 已损坏,而 test.png 没问题。 test.png datatest2.png怎么解决?
【问题讨论】:
标签: c++ visual-c++ visual-studio-2015 resources