如何在Visual C ++ 2012中读取用户定义的资源? [英] How to read user-defined resource in Visual C++ 2012?

查看:95
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆