是否有任何win32 API替换Windows Store应用程序的LoadString?

时间:2014-07-16 07:45:44

标签: c++ winapi boost windows-runtime

我正在尝试在Windows商店中构建Boost.Regex,并面临此问题:

  

...... \ libs \ regex \ build .. \ src \ w32_regex_traits.cpp(275):错误   C3861:'LoadStringA':找不到标识符   ...... \ libs \ regex \ build .. \ src \ w32_regex_traits.cpp(308):错误   C3861:'LoadStringW':未找到标识符

在MSDN中,我发现在Windows应用商店应用中禁止使用LoadString。但是,我没有找到LoadString的替换win32 API。

如果LoadString没有替换Win32 api,我必须使用WinRT API(C ++ / CX)。似乎Windows::ApplicationModel::Resources::ResouceLoader可用于从资源加载字符串。但是,我不知道如何使用现有参数调用R esourceLoader::GetString(String^ resource)

以下是Boost.Regex中的原始代码。任何人都可以告诉我如何从HINSTANCE和资源uID获取资源键(String)吗?

BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::wstring& def)
{
   wchar_t buf[256];
   if(0 == ::LoadStringW(
      static_cast<HMODULE>(cat.get()),
      i,
      buf,
      256
   ))
   {
      return def;
   }
   return std::wstring(buf);
}

以下是ResourceLoader的示例代码:

auto loader = ref new Windows::ApplicationModel::Resources::ResourceLoader::GetForCurrentView();
String^ text = loader->GetString("Farewell");

这是MSDN中ResourceLoader类的引用:http://msdn.microsoft.com/zh-cn/library/windows/apps/windows.applicationmodel.resources.resourceloader.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2

谢谢, 奕

0 个答案:

没有答案