我正在为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();
它可以关闭应用程序,但是会导致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();
在模拟器中,无法通过再次单击图标来重新启动应用程序

最佳答案

退出该应用所需要做的就是打破CoreApplication::Run while()循环。

例如,对于默认模板多维数据集DirectX示例应用程序,您需要做的就是将m_windowClosed成员变量设置为true。

因此,如果您想在点击屏幕时结束该应用,请执行...

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


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

关于c++ - 如何在WP8上使用cpp使用“Application.Current.Terminate”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15976483/

10-11 22:57
查看更多