【问题标题】:How do I open a new Window in WinUI3 with WinRT/C++?如何使用 WinRT/C++ 在 WinUI3 中打开新窗口?
【发布时间】:2021-09-18 05:17:07
【问题描述】:

如何在 WinRT / WinUI3 中打开新窗口?我想单击一个按钮并在当前/主窗口顶部打开另一个浮动窗口。

我已经尝试了几个零运气样本的代码:

大多数 C++ WinUI3 文档中仍然只有 C# 代码示例,因此对我来说基本上没用。我只想打开一个新窗口,别无其他。

【问题讨论】:

    标签: windows-runtime winui-3 cppwinrt


    【解决方案1】:

    您可以使用Windows App SDK Samples,例如修改此方法: void DemoPage::TitleBtn_Click

    像这样:

    void DemoPage::TitleBtn_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e)
    {
        auto window = Window();
        auto tb = TextBlock();
        tb.Text(L"Hello");
        window.Content(tb);
        window.Activate();
    }
    

    看起来与此处的 C# 示例完全相同:Create a new Window

    var window = new Window();
    window.Content = new TextBlock() { Text = "Hello" };
    window.Activate();
    

    【讨论】:

    • 在 project reunion 0.8.2 中,我在 CreateInstance(winrt::Windows::Foundation::IInspectable const& baseInterface, winrt::Windows::Foundation::IInspectable& innerInterface) 遇到了异常,代码如下。我用一个 1.0.0 的实验项目试了一下,效果很好。
    • 我正在使用“标准”Project Reunion 0.8.3.5203​​6702 从这里docs.microsoft.com/en-us/windows/apps/windows-app-sdk/…。确保您的 C++/WinRT 也是最新的(我使用的是 2.0.210913.7)。你有什么例外?在哪个 CreateInstance 上?
    • auto window = Window(); 给了我一个未处理的异常 0xC000027B。我确认我所有的 nuget 包都已更新到最新版本。
    • C++/WinRT 和 Project Reunion 不是 nugets:i.imgur.com/kvfyaDC.png
    • C++/WinRT 分为两部分:VSIX(负责创建项目)和包含代码生成器和基础库的 C++/WinRT NuGet package。后者是必需的构建依赖项,而前者(技术上)是可选的。
    【解决方案2】:

    您必须升级到 Project Reunion 1.0.0 EXPERIMENTAL 或更高版本才能使用<winrt/Microsoft.UI.Windowing.h>。然后您可以创建一个AppWindow,如下所示:

    auto appwind = winrt::Microsoft::UI::Windowing::AppWindow::Create();
    appwind.Title(L"New Window Title");
    appwind.Show();
    

    这在 project reunion 0.8.2 或 0.8.3 稳定版本中不起作用。

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2023-01-25
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2018-03-03
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多