2016-09-02 8 views
0

Visual Studio 2015、コンソールアプリケーション。リソースを使って作業しようとしています。いくつかのpng画像をリソースに追加しました。 IDEからイメージをエクスポートしても問題ありません。今私はC++で同じことをしようとしています。ここにコードC++ファイルへのpngリソースのエクスポート

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バイトです。私は両方のファイルを16進エディタで開きました。最初の5バイトは89 50 4E 47 0Dと同じです。問題は、すべての視聴者がtest2.pngが破損していてtest.pngが正常であると言うことです。 test.png datatest2.pngどのように修正するのですか?

答えて

1

代わりに、fopen_sのモード"wb+"を使用して、テキストのデータ変換(行末のパッチ適用など)を回避します。追加されたbは "バイナリ"を意味します。

関連する問題