【问题标题】:C++ Exporting png resource to fileC ++将png资源导出到文件
【发布时间】: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


    【解决方案1】:

    在 fopen_s 中使用"wb+" 模式,以避免任何文本数据转换(如行尾修补等)。添加b 表示“二进制”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多