[リソースの追加]ダイアログで、[すべてのファイル(。)]を選択すると、任意のタイプのファイルをインポートできるようになります。 「カスタムリソースタイプ」ダイアログが表示されたら、「リソースタイプ」フィールドに「RCDATA」と入力します。
ファイルを.RC開いた場合、あなたはこのようなものが表示されます:
/////////////////////////////////////////////////////////////////////////////
//
// RCDATA
//
IDR_RCDATA1 RCDATA "myfile.whatever"
をし、それがライン以下でRESOURCE.Hを生成します:あなたはこのようにアクセスコードで
#define IDR_RCDATA1 101
を:
#include "resource.h"
#include <windows.h>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyBinaryData = ::LockResource(myResourceData);
return 0;
}
ここで、pMyBinaryDataはこの実行可能ファイルの最初のバイトへのポインタです。より多くの情報訪問 Resource Functions
についてここでは、ディスク上にこのようなバイナリリソースを節約する方法を例です:
#include "resource.h"
#include <windows.h>
#include <fstream>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
unsigned int myResourceSize = ::SizeofResource(NULL, myResource);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyBinaryData = ::LockResource(myResourceData);
std::ofstream f("C:\\x.bin", std::ios::out | std::ios::binary);
f.write((char*)pMyBinaryData, myResourceSize);
f.close();
return 0;
}
あなたがそのようなリソースをプロジェクトをビルドすると、このリソースは、あなたのプログラム(DLLの一部となります)。
DLLプロジェクトで必要な.resファイルを追加するのを忘れたかどうかは、かなり不明です。最も典型的な失敗モードは、間違ったモジュールハンドルをFindResource()に渡しています。 DLLのモジュールハンドルでなければなりません。あなたはDllMain()からそれを取得します。そして、はい、これを一緒に糊付けするのは面倒です。 –