C++/CLI の次は C++/CX ですか...
επιστημηといたしましては、C++/CXには少なからず期待しています。
だってアナタ、nativeだっつーじゃないですか。
C++/CLIはmanagedなんでref-classの縛りがキツかったんですわ。ref-class内にnativeなメンバを置けないとかref-classがstd::vectorの要素になれないとか。
対してC++/CXのref-classはnativeだという。ならばC++/CLIでのきっつい縛りが相当緩和されるに違いない、と。
んだもんで遅ればせながらC++/CXでしばらく遊んでみようかと本日突然思い立ったわけですわ。
つってもC++/CXで書けるのはストアアプリだけとのことなんで、まずはC++/CXで遊ぶべくストアアプリに慣れるとこから着手するです。
GUIのお試しに僕が決まって作るのは「Counter」...まずはとにかく雛形を用意するとこから。Windowsストアアプリ:「新しいアプリケーション」を選択。
わしゃわしゃとコードが吐かれ、その中にMainPage.xaml(h,cpp)があるけども、ここで一枚新たなページを作ります。プロジェクト→新しい項目の追加 から Windowsストア:「基本ページ」で TrialPage.xaml を吐いてもらいます。なんか見慣れぬダイアログが上がってくるけど構わず[はい]って答えとく。
CounterPageを主ページとすべく、App.xaml.cpp に現れる "MainPage" を "TrialPage" に差し替えます。
ここで一度 build すれば MainPage.xamlなんちゃらは用済みなので削除します。
んでもって CounterPage に TextBlock と Button をふたつ貼り付け、それぞれ txtCount, btnInc, btnDec と命名しました。
ふたつのボタンに Click イベントハンドラをあてがい、TrialPage.xaml.h にある public ref class TrialPage sealed 内に private メンバ int count_ を追加し、TrialPage.xaml.cpp に加筆します:
TrialPage::TrialPage() : count_(0)
{
? InitializeComponent();
}
void App1::TrialPage::btnInc_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
? ++count_;
? txtCount->Text = count_.ToString();
}
void App1::TrialPage::btnDec_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
? --count_;
? txtCount->Text = count_.ToString();
}
こんなもんでいいかな、シミュレータで動かしてみましょ。
よしよし。今日はこのへんで勘弁したらぁ。