【问题标题】:Resources in a C++ Metro Style ApplicationC++ Metro 风格应用程序中的资源
【发布时间】:2012-06-18 23:36:16
【问题描述】:

我有一个用 C++/GDI 制作的库,我正在尝试移植到 C++/Metro 风格。

函数FindResource/LoadResource/(...) 在Metro Style Applications中不可用,并且该主题的文档说:

Dev Center - Metro style apps > Docs > Developing games > Developing Metro style DirectX and C++ apps > Defining app resources

此材料尚不可用。提供了此占位符主题 作为可能包含在以后的文档的示例 释放。

有没有人找到有关如何在 C++ Metro 风格应用程序中处理资源的任何其他信息来源?

我正在寻找一种方法,将字体文件作为资源存储在我的应用程序包中,并以编程方式将其作为流加载。

【问题讨论】:

  • 似乎没有任何东西直接对应于 Win32 风格的资源。至少从我目前所见(诚然,不是很多)更大的资源在本地存储中做,而在本地设置中做的更小。
  • 您不能在 Metro 的资源中存储字体文件。 Metro 使用基于文件的部署模型,即您应该将字体文件添加到您的项目中,它将作为构建的一部分与您的应用程序一起打包。

标签: c++ visual-c++ windows-8 windows-runtime winrt-xaml


【解决方案1】:

Metro 有一个可用于访问资源的 ResourceManager 类。这是从 Assets 文件夹中获取文件的示例 -

auto file = ResourceManager::Current->MainResourceMap->GetSubtree("Files")->GetValue("Assets/Logo.png");

这是在 Metro 应用程序中访问资源的链接 -

http://msdn.microsoft.com/en-us/library/windows/apps/hh694557.aspx

【讨论】:

  • 恐怕我不能使用这个解决方案,因为ResourceManager is a class from .Net Framework,我正在开发一个原生C++库。
  • WinRT 有一个 ResourceManager 类。我帖子中的代码摘自我使用 XAML 和 C++/CX 创建的 Metro 应用程序。
【解决方案2】:

检查this article 关于 WinRT 中的组件 DLL。

显然并且完全基于本文的作者:

这里有趣的部分是 C++ 应用程序是基于 XAML 的。 C++ 中不再有 .RC 和 resource.h 文件(对于 Metro)。

希望这能回答你的问题。

【讨论】:

  • 这是朝着正确的方向发展,尽管它留下了许多未解决的问题。在 .Net 中,您可以在 XAML 文件中使用资源 ID,还可以使用 ResourceManager 类以编程方式访问这些资源。我不清楚如何在 C++/Metro 风格的应用程序中实现同样的目标
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多