如何在Visual C ++ 2012中读取用户定义的资源? [英] How to read user-defined resource in Visual C++ 2012?
本文介绍了如何在Visual C ++ 2012中读取用户定义的资源?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
全部
我的资料来源如下:
在我的.rc文件中
IDR_XML1 XML "LoginQuery.xml"
我的resource.h文件
in my resource.h file
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
//
#define IDR_XML1 106
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 107
#define _APS_NEXT_COMMAND_VALUE 40002
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
和我的.cpp文件中。
and in my .cpp file.
HMODULE handle = ::GetModuleHandle(NULL);
HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(IDR_XML1), MAKEINTRESOURCE("XML"));
HGLOBAL rcData = ::LoadResource(handle, rc);
DWORD size = ::SizeofResource(handle, rc);
const char* data = static_cast<const char*>(::LockResource(rcData));
但是数据返回空值。
什么我做错了吗?
编辑
我的C ++项目是dll项目,并且我正在读取该项目中的文件。
My C++ project is dll project, and I am reading the file inside of that project.
推荐答案
您的dll条目类似于:
Your dll entry is something like:
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
hinstDLL
是您的dll的实例,我建议使用全局变量来保留该实例并在DLL加载后立即分配它
hinstDLL
is instance of your dll, I recommend to have global variable to keep this instance and assign it instantly after dll is loaded.
HINSTANCE g_hInstance;
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
{
g_hInstance = hinstDLL;
/*code*/
}
您的资源负载应该看起来像像这样:
And you resource load should look something like:
HRSRC rc = ::FindResource(g_hInstance, MAKEINTRESOURCE(IDR_XML1), MAKEINTRESOURCE(XML));
HGLOBAL rcData = ::LoadResource(g_hInstance, rc);
DWORD size = ::SizeofResource(g_hInstance, rc);
const char* data = static_cast<const char*>(::LockResource(rcData));
BTW。与您的问题无关,但名为 rc 的变量通常用于 RECT
类型。
BTW. nothing about your question but variable named rc usually is used for RECT
type.
这篇关于如何在Visual C ++ 2012中读取用户定义的资源?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文