все
У меня есть источник ниже:
в моем .rc файле
IDR_XML1 XML "LoginQuery.xml"
в моем файле resource.h
//{{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.
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, и я читаю файл внутри этого проекта.
Ваша запись в DLL что-то вроде:
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
hinstDLL
Это экземпляр вашей DLL, я рекомендую иметь глобальную переменную, чтобы сохранить этот экземпляр и назначить его сразу после загрузки DLL.
HINSTANCE g_hInstance;
BOOL WINAPI DllMain(_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved)
{
g_hInstance = hinstDLL;
/*code*/
}
И нагрузка на ваш ресурс должна выглядеть примерно так:
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));
КСТАТИ. ничего о вашем вопросе, кроме переменной с именем гс обычно используется для RECT
тип.
Других решений пока нет …