Я пишу приложение C ++ DirectX без XAML для Windows Phone 8.
Я обработал клавишу возврата, потому что я хочу закрыть приложение вручную,
но я не нахожу API для cpp.
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();
это не способ для близких.
может быть, это просто авария.
//////////////////// update 2 /////////////
Я нахожу API
Windows::ApplicationModel::Core::CoreApplication::Exit();
но док говорит, что
«Завершает работу приложения. Не используйте этот метод для закрытия приложения вне сценариев тестирования или отладки».
поэтому я думаю, что это не пройдет испытание.
//////////////////// update 3 /////////////
если использовать
Окна :: ApplicationModel :: Основной :: CoreApplication :: Выход ();
закрыть приложение. а затем, если я нажму значок, чтобы перезапустить приложение. это будет стоить очень очень очень много времени, чтобы начать.
может быть Windows :: ApplicationModel :: Core :: CoreApplication :: Exit () закрыть некоторые системные службы.
но если использовать исключение, чтобы закрыть приложение, оно не будет стоить много времени для запуска.
//////////////////// update 4 /////////////
если использовать
Окна :: ApplicationModel :: Основной :: CoreApplication :: Выход ();
в симуляторе не может перезапустить приложение, нажав значок снова
Все, что вам нужно сделать, чтобы выйти из приложения, это вырваться из CoreApplication::Run
цикл while ().
Например, для примера приложения DirectX для куба по умолчанию все, что вам нужно сделать, это установить m_windowClosed
переменная-член к истине.
Так что, если вы хотите, чтобы приложение заканчивалось, если вы нажмете на экран, сделайте …
void PhoneDirect3DApp1::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args)
{
m_windowClosed = true;
}
Однако, как говорится в комментариях, вы должны позаботиться о том, чтобы правильно обработать кнопку «Назад», иначе вы не справитесь.
Других решений пока нет …