0

我正在尝试 C++/WinRT 和 VisualStudio 中可用的 WinUI 模板。我对命名空间::winrt::Microsoft::winrt::Windows. 我只知道前一个,因为自动生成的回调函数使用了一个类型 from ::winrt::Microsoft,并且不会编译,因为我::winrt::Windows错误地从命名空间传递了同名类型。我找不到更多关于的信息::winrt::Microsoft,甚至找不到官方文档。

据我所知,::winrt::Microsoft并且::winrt::Windows大部分类型名称相同,但::winrt::Microsoft. 例如,::winrt::Windows::UI::Colors两者::winrt::Microsoft::UI::Colors都存在,但::winrt::Windows::UI::Color在 Microsoft 命名空间中没有“替代”。

问题:

  • 为什么我们有 2 个几乎相同但略有不同的命名空间?
  • 在什么情况下我会选择其中一种?
  • 为什么::winrt::Microsoft缺少某些类型?
4

1 回答 1

1

Windows是原始命名空间,所有与 UI 相关的类型都在其中。Microsoft作为将WinUI摆脱其仅限于 UWP 的痛苦的一部分,其中一些类型被“重新发明”到命名空间中。

如果(较新的)Microsoft命名空间中有可用的类型,则使用该类型。过渡尚未完成,因此缺少某些类型。

于 2020-09-25T17:18:56.067 回答