以下是我添加文本文件作为资源所采取的步骤:
1. 右键单击项目,添加新项
2. 选择文本文件,点击添加
3. 转到项目属性,配置属性->链接器->输入->嵌入托管资源文件
4. 然后在文本框中添加我的文本文件"items.txt"
接下来,在我的.rc文件中,我放置了以下代码:
在我的 resource.h 文件中,我放置了如下内容:
在我的form1.cpp方法中:
接下来,在我的.rc文件中,我放置了以下代码:
#include "resource.h"
IDR_DATA1 TEXTFILE "Items.txt"
在我的 resource.h 文件中,我放置了如下内容:
#define TEXTFILE 256
#define IDR_DATA1 255
在我的form1.cpp方法中:
std::string result;
char* data = NULL;
HINSTANCE hInst = GetModuleHandle(NULL);
HRSRC hRes = FindResource(hInst, MAKEINTRESOURCE(IDR_DATA1), MAKEINTRESOURCE(TEXTFILE));
if (NULL != hRes)
{
HGLOBAL hData = LoadResource(hInst, hRes);
if (hData)
{
DWORD dataSize = SizeofResource(hInst, hRes);
data = (char*)LockResource(hData);
}
else
{
MessageBox::Show("hData is null");
return "";
}
char* pkcSearchResult = strstr(data, "2000000");
if (pkcSearchResult != NULL)
MessageBox::Show(gcnew String(pkcSearchResult));
}
else
MessageBox::Show("hRes is null");
return result;
无论如何我一直得到hRes为null的错误,不知道为什么FindResource没有找到Items.txt,尽管我按照上述步骤将其添加为资源,有人知道为什么FindResource()不起作用吗?顺便说一下,它没有编译错误,上面的代码在一个方法中,该方法应该返回包含“2000000”的文本行(我已更改用于测试)。
GetModuleHandle
。您可以将NULL
直接作为第一个参数传递给FindResource
,而无需使用hInst
。 - Max Truxa