SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C++/CXでHelloUWP!

C++/CXでHelloUWP!(後編)

step-5:「戻る」の実装

 さて、これでmainPageからPage2に移動できたんだけど、「戻る」ことができません。まず[戻る]ボタンの表示から。

 Page2の中に[戻る]ボタンを置き、それが押された時のイベントを捕まえて云々……でももちろんOKなのですが、「戻る」に必要な基本機能はUWPフレームワークが用意してくれてます。

 App.xamlのコードビハインド:App.xaml.cppで定義されたOnLaunchの末尾に、「ページの移動が行われた」イベントに反応するイベントハンドラ:RootFrame_Navigatedをアタッチします。

 RootFrame_Navigated()ではUWPフレームワークが持っている「バックスタック」を利用します。バックスタックはページ移動のたびに移動先がpushされ、「戻る」たびにpopされて元のページに移動してくれます。バックスタックが空のときはそれ以上戻ることができない(すなわちアプリ起動時のページ)わけで、そのときは[戻る]ボタンを表示しちゃいけません。rootFrame->CanGoBackが「現ページから戻れるか否か」を現していて、その値(true/false)に応じて[戻る]ボタンを見せたり/隠したりしています。

 まだ[戻る]ボタン押しても戻れません。ボタンを表示しただけで、戻る処理を書いてませんから。「戻れって言われた」イベントを捕まえて、ちゃんと戻りましょう。

 お疲れさまでした。

 以上、C#で行われた小一時間のハンズオン・セミナーのC++/CXによる再演を試みました。確かにC#の方が実装が楽ではありますが、かといってC++/CXが並外れて面倒/難解だとは感じませんでした(僕がC++に慣れているからということもありますが)。ただやはり、UWPで多用される非同期処理が厄介です。これがもっと手軽に/楽に書ければと思います。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
C++/CXでHelloUWP!連載記事一覧
この記事の著者

επιστημη(エピステーメー)

C++に首まで浸かったプログラマ。Microsoft MVP, Visual C++ (2004.01~2018.06) "だった"りわんくま同盟でたまにセッションスピーカやったり中国茶淹れてにわか茶...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9133 2016/01/08 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー