gpt4 book ai didi

c++ - 来自资源数据的 C/C++ 消息框

转载 作者:行者123 更新时间:2023-11-30 19:20:30 33 4
gpt4 key购买 nike

我正在尝试从资源中读取字符指针/字符串,然后从消息框中显示它。然而它似乎是空白的,我不知道我是否正确地阅读它。

这是我的资源:

Resources

这是我用来读取它的代码:

void main()
{
HGLOBAL G1, G2;

HMODULE hMod = GetModuleHandle(NULL);

G1 = LoadResource(hMod, FindResource(NULL, MAKEINTRESOURCE(RT_RCDATA), "RESOURCE1"));
G2 = LoadResource(hMod, FindResource(NULL, MAKEINTRESOURCE(RT_RCDATA), "RESOURCE2"));

//G1 = LoadResource(NULL, FindResource(NULL, "RCData", "RESOURCE1"));
//G2 = LoadResource(NULL, FindResource(NULL, "RCData", "RESOURCE2"));

MessageBoxA(NULL, (char*)LockResource(G1), (char*)LockResource(G1), MB_OK);
MessageBoxA(NULL, (char*)LockResource(G2), (char*)LockResource(G2), MB_OK);


/*char *strURL;
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResource = FindResource(hModule, "RESOURCE1", "RCData"); //HRSRC hResource = FindResource(hModule, "RCData", "RESOURCE1");
HGLOBAL hMemory = LoadResource(hModule, hResource);
DWORD dwSize = SizeofResource(hModule, hResource);
LPVOID lpAddress = LockResource(hMemory);

memcpy(strURL, lpAddress, dwSize);

MessageBoxA(0, strURL, strURL, MB_OK);*/

ExitProcess(0);
}

注释部分是我尝试正确阅读的替代方案。出了什么问题?我知道 RT_RCDATA 不正确,因为在资源中它显然是 "RCDATA" 但后来我也尝试在引号中仅使用 LPCSTR,但这也没有帮助。

此外,我不会释放资源(FreeResource),因为 MSDN 是这么说的:

This function is obsolete and is only supported for backward compatibility with 16-bit Windows. For 32-bit Windows applications, it is not necessary to free the resources loaded using LoadResource.

出了什么问题或者我做错了什么?

编辑:坏标签,因为显然我需要某种声誉来为此添加正确的标签,这对我来说绝对没有意义。

最佳答案

您可以使用LoadString WinAPI 像这样:

HMODULE hMod = GetModuleHandle(NULL);
char myString[512];
LoadString(hMod, IDS_STRING101, myString, 512);
MessageBox(NULL, myString, "", MB_OK);

IDS_STRING101 已在您的 .rc 文件中定义

关于c++ - 来自资源数据的 C/C++ 消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22149376/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com