如何在VC++中从Resources加载文本文件?

Mar*_*ski 10 dll resource-dll visual-c++

我在VC++中编写DLL,我需要使用外部文本文件.我现在有类似的东西:

 ifstream file;
 string line;

 file.open("C:\\Users\\Me\\Desktop\\textfile.txt");
 getline(file,line);
 file.close();
Run Code Online (Sandbox Code Playgroud)

我知道我可以在Resources中拥有这个文件吗?

我通过转到"ResourceView" - >"添加资源" - >"导入"添加了我的文本文件.我选择了我的文本文件并创建了自定义资源类型.

如何访问此文件以与上面的代码类似地使用?我有Resource.h但我应该怎么做呢?我也可以编辑我的资源文本文件吗?

Leo*_*son 13

假设:

  • 资源类型为"TEXT"
  • 资源ID是MY_RESOURCE_ID(这将是您的resource.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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:您不必在32位或64位版本的Windows上卸载或解锁资源,如果再次获取资源,则不会泄漏内存; 你总是得到同样的记忆.

有关更新资源的信息,请参阅在MSDN中更新资源.