Хорошо, после создания нескольких тестовых проектов и воссоздания проекта приложения с нуля, я, похоже, нашел проблему. Если я инициализирую ресурсы в конструкторе приложения моего основного файла, все работает правильно. Например, мой проект называется Report, поэтому я добавляю код инициализации в конструктор CReportApp в файле Report.cpp, и все в порядке. Спасибо за вашу помощь, Ханс Пассант. Мой код ниже:
ResourceGetter.h
#pragma once
using namespace System;
using namespace System::Resources;
public ref class ResourceGetter
{
static ResourceManager^ rmResources = nullptr;
public:
static ResourceGetter()
{
}
static void Initialize()
{
if ( rmResources == nullptr )
{
rmResources = gcnew ResourceManager("Report.ReportStrings", Assembly::GetExecutingAssembly());
ResourceProxy::Initialize(gcnew Mnc::Utilities::GetResourceDelegate(&ResourceGetter::GetResource));
}
}
static String^ GetResource(String^ sKey)
{
String^ sReturn = nullptr;
try
{
if ( rmResources != nullptr )
sReturn = rmResources->GetString(sKey);
else
System::Diagnostics::Debug::WriteLine("Failed to retrieve resource (" + sKey + "): Returned null.");
}
catch (Exception^ ex)
{
ex;
}
return (sReturn == nullptr) ? "[" + sKey + " not found]" : sReturn;
}
};
Report.cpp
CReportApp::CReportApp()
{
ResourceGetter::Initialize();
}