11

私はVC++でDLLを書いていますが、外部テキストファイルを使用する必要があります。私は今このようなものを持っています:

 ifstream file;
 string line;

 file.open("C:\\Users\\Me\\Desktop\\textfile.txt");
 getline(file,line);
 file.close();

このファイルをリソースに含めることができることを理解していますか?

「ResourceView」->「AddResource」->「Import」に移動して、テキストファイルを追加しました。テキストファイルを選択し、カスタムリソースタイプを作成しました。

上記のコードと同様に使用するために、このファイルにアクセスするにはどうすればよいですか?Resource.hを持っていますが、どうすればよいですか?リソーステキストファイルも編集できますか?

4

1 に答える 1

14

仮定:

  • リソースタイプは「TEXT」です
  • リソースIDはMY_RESOURCE_IDです(これはリソースからの定数になります。h)
  • EXEまたはDLL(リソースを含む方)のhInstanceをm_hInstanceに保存しました。

リソースをメモリにロードし、そのリソースへのポインタを取得するには、次のようにします。

HRSRC hResource = FindResource(m_hInstance, MAKEINTRESOURCE(MY_RESOURCE_ID), L"TEXT");

if (hResource)
{
    HGLOBAL hLoadedResource = LoadResource(m_hInstance, hResource);

    if (hLoadedResource)
    {
        LPVOID pLockedResource = LockResource(hLoadedResource);

        if (pLockedResource)
        {
            DWORD dwResourceSize = SizeofResource(m_hInstance, hResource);

            if (0 != dwResourceSize)
            {
                 // Use pLockedResource and dwResourceSize however you want
            }
        }
    }
}

注:32ビットまたは64ビットバージョンのWindowsでは、リソースをアンロードまたはロック解除する必要はありません。また、リソースを再度取得しても、メモリがリークすることはありません。常に同じメモリを取得します。

リソースの更新については、MSDNの「リソースの更新」を参照してください。

于 2010-12-03T11:48:09.047 に答える