1

Windows Phone 8 用の XAML を使用しない C++ DirectX アプリケーションを作成しています。手動でアプリを閉じたいので、戻るキーを処理しましたが、cpp の API が見つかりません。

C# には公式の APISystem.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(); を使用する場合 シミュレーターでは、アイコンをもう一度クリックしてもアプリを再起動できません

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 に答える