2013-05-26 2 views
0

Я работал с C# некоторое время, и на этот раз я пытаюсь написать .NET-приложение на C++. В C# мне удалось легко получить доступ к управляемым ресурсам из кода, имя файла ресурса работало вроде как класс, поэтому, если бы у меня была строка с именем «abc» в файле ресурсов cba.resx, просто запись cba.abc возвращается с строкой из файла ресурсов. С ней работает даже intellisense. То же самое работает с значками и т. Д.Доступ к встроенным ресурсам в C++/CLI

Можно ли сделать то же самое на C++, и если да, то как? Или, если нет, что является самым простым способом доступа к строкам/значкам в файлах ресурсов?

+1

++ IDE C отсутствует дизайнер ресурсов, гаджет, который делает его легким в C#. Вам придется написать код самостоятельно. Или используйте редактор неуправляемых ресурсов. Следите за мячом, C++/CLI - это язык взаимодействия, он не совсем подходит для написания полных программ. –

ответ

4

В Visual Studio проекты C# имеют конструктор файлов resx и генератор класса свойств. Проекты C++/CLI получают только конструктор файлов resx. Оба получают шаги сборки для встраивания скомпилированных ресурсов в сборку.

Вы можете написать класс Properties самостоятельно или просто получить доступ к ресурсам в коде, где вы нуждаетесь в них, как это:

auto resourceAssembly = Reflection::Assembly::GetExecutingAssembly(); 
// .Resources is the name generated by resxgen, e.g., from the input file name Resources.resx 
auto resourceName = resourceAssembly->GetName()->Name + ".Resources"; 
auto resourceManager = gcnew Resources::ResourceManager(resourceName, resourceAssembly); 
auto String1 = cli::safe_cast<String^>(resourceManager->GetObject("String1")); 
+0

Спасибо, я смог написать класс свойств сам с этим, поэтому он работает так же, как и на C#, теперь проще работать с :) – CivDav

+0

Это не сработало для меня, потому что имя ресурса было фактически {{RootNamespaceName}} .Ресурсы. Теперь, если ваше корневое пространство имен совпадает с вашим именем сборки, этот код должен работать. –

Смежные вопросы