【发布时间】:2016-03-20 08:52:11
【问题描述】:
假设我有这门课:
public ref class Page1 sealed : Windows::UI::Xaml::Controls::Page {};
我可以像这样激活这个类的一个实例:
auto page = ref new Page1();
但是我如何在原始 C++ 中做到这一点?
我试过了,但是不行:
Microsoft::WRL::Wrappers::HString className;
className.Set(L"App1.Page1");
IInspectable *page;
Windows::Foundation::ActivateInstance(className.Get(), &page);
当我指定一个 Windows 运行时类名(例如“Windows.UI.Xaml.Controls.Button”)时,上面的代码确实有效,而不是我自己的引用类“App1.Page1”。
另外,假设我在App1 命名空间中声明了一个名为Page1 的公共引用类,我如何从HSTRING“App1.Page1”中将此类的实例激活为IInspectable*?
【问题讨论】:
-
有点怀上 WRL 通常是行不通的。您通常也会在 WRL 中声明该页面,然后您现在将使用该名称,因为您必须明确声明它。我认为 C++/CX 生成的名称用命名空间_._classname 的下划线装饰,因此是“App1_._Page1”。
标签: c++ windows-runtime c++-cx wrl