【问题标题】:How to create CoreApplicationView (C++/CX)?如何创建 CoreApplicationView (C++/CX)?
【发布时间】:2020-02-17 11:15:34
【问题描述】:

Im 试图在 UWP 上创建第二个窗口,但对我来说没有任何效果。不幸的是,我在 UWP 方面做得不好,而且 C++/CX 的指南很少。 我的 IFrameworkViewSource:

IFrameworkView^ ApplicationSource::CreateView()
{
    return ref new test();
}

IFrameworkView 的最简单实现:

test::test() 
{
}    

void test::Initialize(CoreApplicationView^ applicationView)
{
    applicationView->Activated +=
        ref new TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &test::OnActivated);
}

void test::SetWindow(Windows::UI::Core::CoreWindow^ window) {

}    

void test::Load(Platform::String^ entryPoint)
{
}

void test::Run()
{
}

void test::Uninitialize()
{
}

void test::OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
{
    CoreWindow::GetForCurrentThread()->Activate();
}

尝试创建视图:

auto applicationSource = ref new ApplicationSource();
CoreApplication::CreateNewView(applicationSource);

有时应用程序正在运行,有时它返回 HR 0x8000000e 。 我在 microsoft visual studio 2019 中使用经典模板“Application DirectX11(UWP - C++/CX)

【问题讨论】:

    标签: uwp c++-cx


    【解决方案1】:

    您可以先调用CoreApplication.CreateNewView 为视图内容创建一个新窗口和线程。然后跟踪新视图的 Id。您稍后使用它来显示视图。之后,活动窗口并显示新视图。你可以尝试使用下面的代码,更多细节可以参考这个document 使用c#。

    auto newView = CoreApplication::CreateNewView(ref new ApplicationSource());
    newView->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, ref new DispatchedHandler([this]()
    {
        auto viewId = Windows::UI::ViewManagement::ApplicationView::GetForCurrentView()->Id;
        CoreWindow::GetForCurrentThread()->Activate();
        CoreApplication::MainView->Dispatcher->RunAsync(CoreDispatcherPriority::Normal, ref new DispatchedHandler([viewId]()
        {
            auto asyncAction = Windows::UI::ViewManagement::ApplicationViewSwitcher::SwitchAsync(viewId, Windows::UI::ViewManagement::ApplicationView::GetForCurrentView()->Id);
        }));
    }));
    

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      相关资源
      最近更新 更多