はじめに
Visual C++ 2012(vc11)のセールスポイントの一つは何といってもC++/CXでしょう。C++/CLIが.NET対応managed拡張であるのに対し、C++/CXはnative拡張、Windows 8ストアアプリのUIデザインをC#/VBと同様XAMLを使ってできるとのこと。C++屋の僕には魅力的な言語拡張です。
僕の愛機はいまだにWindows 7。開発環境その他モロモロのツールやアプリが山ほど積み込まれているものだから、Windows 8に乗り換えるのがどえらい手間でためらっていたところ、二世代前の重くてデカいノート機を譲り受けました。ここぞとばかりにWindows 8とVisual Studio 2012をインストールし、小手調べにC++/CXで書かれたサンプルコードを探し回っていたのですが、「はじめの一歩」にふさわしい、簡単だけどきちんと書かれたサンプルは見つけられずじまい。C#/VBコードを読み漁ってC++/CXにポートしたりお友達に訊きまくったりのブザマな出だしとなりました。
今回はそのブザマなトコを舞台裏に隠し、スマートにサクサクと事を進めたかのようなC++/CXストアアプリの「はじめの一歩」を(スクリーンショットたっぷり付けて)お披露目します。
ストアアプリのひな形を作る
お題は「WPFアプリケーションで腕試し」で使った"カウンタ"を選びました。C++/CXでストアアプリ版カウンタを作ります。
では早速、新しいプロジェクト→Visual C++/Windowsストアから"新しいアプリケーション(XAML)"を選び、必要最小限のコードセットを吐いてもらいます。
プロジェクトの選択肢としては、この他にも"グリッドアプリケーション"や"分割アプリケーション"がありますが、これらは「はじめの一歩」にしてはあまりにややこしい。なので"新しいアプリケーション"を選んだけれど、こいつの吐くコードは単純すぎて扱いにくそう。二歩三歩と進む際につまづいてしまいそうです。ひな形を吐いてくれたVisual Studioくんには悪いけど、一部棄てて差し替えることにします。吐かれたコードセットからMainPage.xamlを右クリックし削除してください。
しかるのち、プロジェクト→新しい項目の追加から"Windowsストア/基本ページ"を追加します。名前はさきほど削除したMainPage.xamlで。不足しているファイルを追加するか?と訊いてくるので"はい"と答えてください。
差し替えたMainPage.xamlに手を加えます。16行目あたりのページタイトルをテキトーに書き換え、40行目あたり(</Grid>直後/<VisualStateManager.VisualStateGroups>直前)に以下のXAMLコードを追加します。
<!-- 新たに追加: ここから --> <Grid Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="120"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid Grid.Column="1" x:Name="CounterPage"> <!-- このGridの中にコントロールを配置します --> </Grid> </Grid> <!-- 新たに追加: ここまで -->
んでもって上記の"CounterPage"と名前を付けたGrid内にTextBlock:txtCountとButton:rtnInc,btnDecを配置します。
2つのボタンには、クリック時のイベントハンドラ:btnInc_Click,btnDec_Clickを与えておきましょう。
ここでビルド/実行すれば中身からっぽのカウンタが現れるハズ。