1

我正在为 Windows Phone 8 编写一个不带 XAML 的 C++ DirectX 应用程序。我处理了后退键,因为我想手动关闭应用程序,但我找不到 cpp 的 API。

C# 有官方 API System.Windows.Application.Current.Terminate(),但 cpp 没有命名空间System::Windows::Application

我搜索了很多,但我只能找到 C# 方法。我试过Windows::UI::Core::CoreWindow::GetForCurrentThread()->Close();
它可以关闭应用程序,但它会导致 a Platform::COMException,并且无法通过 try-catch 解决。

//////////////////更新1////////////

我发现

int b = 0.1*10 - 1;
int a = 1/ b;

应用程序也会退出。所以Windows::UI::Core::CoreWindow::GetForCurrentThread()->Close();不是关闭的方法。也许这只是一次崩溃。

//////////////////更新2////////////

我找到了一个 API

Windows::ApplicationModel::Core::CoreApplication::Exit();

但医生说

“关闭应用程序。请勿使用此方法在测试或调试场景之外关闭应用程序。”

所以我认为它不会通过测试。

//////////////////更新3////////////

如果使用 Windows::ApplicationModel::Core::CoreApplication::Exit(); 关闭应用程序。然后如果我单击该图标以重新启动应用程序。这将花费非常非常长的时间来启动。可能是 Windows::ApplicationModel::Core::CoreApplication::Exit() 关闭一些系统服务。但如果使用异常关闭应用程序,启动时间不会很长。

//////////////////更新4////////////

如果使用 Windows::ApplicationModel::Core::CoreApplication::Exit(); 在模拟器中,它无法通过再次单击图标重新启动应用程序

4

1 回答 1

0

退出应用程序所需要做的就是跳出CoreApplication::Runwhile() 循环。

例如,对于默认模板立方体 DirectX 示例应用程序,您只需将m_windowClosed成员变量设置为 true。

因此,如果您希望应用程序在您点击屏幕时结束,请执行...

void PhoneDirect3DApp1::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args)
{
    m_windowClosed = true;
}

但是,正如评论所说,您必须注意正确处理后退按钮,否则您将无法通过证书。

于 2013-04-13T14:00:15.393 回答