は、Microsoft Visual Studioを使用している場合、それは非常に簡単です: では、リソースダイアログは[インポート]をクリックします、それはあなたが実行可能ファイルをインポートすることができ、その後、ちょうど選ぶように、「すべてのファイル(を。)」を選択あなたが望むファイル。 「カスタムリソースタイプ」ダイアログが表示されたら、「リソースタイプ」フィールドに「RCDATA」と入力します。
ファイルを.RC開いた場合、あなたはこのようなものが表示されます:
/////////////////////////////////////////////////////////////////////////////
//
// RCDATA
//
IDR_RCDATA1 RCDATA "myexecutable.exe"
をし、それがライン以下で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* pMyExecutable = ::LockResource(myResourceData);
return 0;
}
ここで、pMyExecutableはこの実行可能ファイルの最初のバイトへのポインタです。このリソースまたは他の有用な情報のサイズを取得するにはどのようにあなたがここにいます:
http://msdn.microsoft.com/en-us/library/ff468902(v=vs.85).aspx
を...ここにあなたがディスク上でこのようにバイナリリソースを節約する方法を例です:
#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* pMyExecutable = ::LockResource(myResourceData);
std::ofstream f("C:\\x.exe", std::ios::out | std::ios::binary);
f.write((char*)pMyExecutable, myResourceSize);
f.close();
return 0;
}
あなたがビルドするときそのようなリソースを持つプロジェクトでは、このリソースは "プログラム"(.exe、.dll、...)の一部になります。
希望します。)
あなたは何をしようとしているの詳細な例を教えてください。また、これまでに何を試しましたか? – NirMH
さて、ファイルの読み方はわかっていますが、私のC++プログラムを閉じた後に、そこにとどまるC++プログラムにコンテンツを保存する方法がわかりません。 –
新しいファイルを書き込みモードで開き、そこにコンテンツをコピーします。 –