gpt4 book ai didi

c++ - 在 MFC 应用程序中定义和读取用户定义的资源

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

我有一个 mfc dll 项目及其 Resource.h 和 resource.rc 文件。我想在 rc 文件中存储数据(对话框的颜色)。

  1. 如何定义数据?
  2. 如何从代码中访问这些数据?

我根据How to read user-defined resource in Visual C++ 2012?写了这段代码

// resource.h

#define IDR_COLOR_ATT 2010

// resource.rc

IDR_COLOR_ATT BUTTON_DEF
{
0x71c5,
0xffff,
0x0003,
}

// Dialog.cpp

HRSRC rc = ::FindResource(NULL, MAKEINTRESOURCE(IDR_COLOR_ATT),L"BUTTON_DEF");
HGLOBAL rcData = ::LoadResource(NULL, rc);
DWORD size = ::SizeofResource(NULL, rc);
const char* data = static_cast<const char*>(::LockResource(rcData));

但是 FindResource api 返回 null。

最佳答案

FindResource、LoadResource 和 SizeofResource 应该将 DLL 的实例句柄作为第一个参数。您可以在该 DLL 的 DllMain() 函数中获取 DLL 实例句柄,将其保存在全局变量中。或者,您可以使用 DLL 文件作为参数调用 GetModuleHandle,以从中获取实例句柄:https://msdn.microsoft.com/en-us/library/windows/desktop/ms683199(v=vs.85).aspx

HMODULE hMod = GetModuleHandle(L"MyDll.dll");
HRSRC rc = ::FindResource(hMod, MAKEINTRESOURCE(IDR_COLOR_ATT),L"BUTTON_DEF");

关于c++ - 在 MFC 应用程序中定义和读取用户定义的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43044602/

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