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

时间:2010-12-03 10:13:05

标签: visual-c++ dll resource-dll

我在VC ++中编写DLL,我需要使用外部文本文件。我现在有这样的事情:

 ifstream file;
 string line;

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

据我所知,我可以在参考资料中找到这个文件吗?

我通过转到“ResourceView”添加了我的文本文件 - > “添加资源” - > “进口”。我选择了我的文本文件并创建了自定义资源类型。

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

1 个答案:

答案 0 :(得分: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
            }
        }
    }
}

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

有关更新资源的信息,请参阅Updating Resources in MSDN

相关问题