정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8용 Direct3D 앱에서 뒤로 버튼을 감지하는 방법

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1만

 

이 항목에서는 사용자가 Windows Phone Direct3D 앱 에서 뒤로 버튼을 누를 때 이 동작을 감지하는 방법을 보여 줍니다.

Windows Phone 관리되는 앱 은 하나 이상의 페이지로 구성됩니다. 사용자가 앱을 탐색하면 운영 체제에서는 사용자가 방문한 페이지 스택을 유지합니다. 사용자가 뒤로 버튼을 누르면 앱은 첫 페이지에 도달할 때까지 자동으로 페이지를 뒤로 이동합니다. 뒤로 스택에 페이지가 없을 때 사용자가 뒤로 버튼을 누르면 앱이 종료됩니다. Windows Phone 앱을 종료하려면 이 방법을 사용해야 합니다.

Windows Phone Direct3D 앱 에서는 페이지를 사용하거나 탐색 기록을 유지하지 않습니다. 게임의 경우 단일 루프가 있으며 앱에서 시작 화면, 일시 중지 메뉴 또는 게임 자체 등 렌더링할 콘텐츠를 결정합니다. 기본적으로 사용자가 Direct3D 앱 에서 뒤로 버튼을 누르면 앱은 관리되는 앱 의 초기 페이지였던 것처럼 종료됩니다. 사용자가 뒤로 버튼을 눌러 게임을 일시 중지하고 일시 중지 메뉴를 볼 수 있도록 하려면 BackPressed() 이벤트를 구독해야 합니다. 시스템이 키 누르기를 무시하고 앱이 종료되지 않도록 이 이벤트의 처리기에서 associate event args의 Handled()true로 설정할 수 있습니다. 앱이 시작 화면에 있고 뒤로 이동할 수 없는 경우 기본값 false로 설정된 Handled() 속성을 그대로 유지하면 사용자의 예상대로 앱이 종료됩니다.

Direct3D 앱에서 뒤로 버튼 누르기 감지

  1. 새 Direct3D 프로젝트를 만듭니다. 이 예제에서는 프로젝트 이름을 “NativeFundamentals”로 지정한다고 가정합니다.

  2. NativeFundamentals.h 헤더 파일에서 BackPressed() 이벤트에 대한 처리기를 선언하세요. 또한 뒤로 버튼을 누를 때 앱이 이동되는지 여부를 나타내는 멤버 변수를 선언합니다.

    
    	void OnBackButtonPressed(Platform::Object^ sender, Windows::Phone::UI::Input::BackPressedEventArgs^ args);
    
    
    
  3. NativeFundamentals.cpp에서 Windows.Phone.UI.Input 네임스페이스에 참조를 추가합니다.

    
    using namespace Windows::Phone::UI::Input;
    
    
    
  4. NativeFundamentals.cpp의 프로젝트 템플릿과 함께 포함된 OnActivated 메서드에서 BackPressed() 이벤트에 대한 처리기를 후크합니다.

    
    	HardwareButtons::BackPressed += ref new EventHandler<BackPressedEventArgs^>(this, &NativeFundamentals::OnBackButtonPressed);   
    
    
    
  5. OnBackButtonPressed 이벤트 처리기에서 앱이 탐색을 수행해야 하는지 확인합니다. 수행하는 경우 Handled()true로 설정하고 탐색을 수행합니다. 그렇지 않은 경우 false로 설정된 Handled()를 그대로 유지하면 앱이 종료됩니다.

    
    void NativeFundamentals::OnBackButtonPressed(Object^ sender, BackPressedEventArgs^ args)
    {
    	if (m_MyAppCanNavigate) 
    	{
            args->Handled = true;
            DoNavigation();
        } else {
            // Do nothing. Leave args->Handled set to the current value, false.
        }
    }
    
    
    

표시: