ボタンを追加し、クリックしたときのイベントハンドラを追加する。
// イベントハンドラのため追加 #include <winrt/Windows.UI.Xaml.Controls.Primitives.h>
// イベントハンドラ struct handler { void ClickHandler( winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& args) { // クリックされたらメッセージボックス表示 MessageBox(nullptr, L"Clicked", nullptr, 0); } };
前回コードのラベルの部分をボタンに変更する。
ボタン追加は難しくないが、タイトルをwinrt::box_value型で渡さなければいけない。
イベントハンドラはメンバ関数の場合はthisを渡せばいいが今回はクラス内ではないので構造体のオブジェクトを作成して渡す。
// ボタンを追加 Windows::UI::Xaml::Controls::Button btn; btn.Content(winrt::box_value(L"Click")); // ボタンタイトル // イベントハンドラ追加 handler hd; auto revoker = btn.Click({&hd,&handler::ClickHandler }); btn.VerticalAlignment(Windows::UI::Xaml::VerticalAlignment::Center); btn.HorizontalAlignment(Windows::UI::Xaml::HorizontalAlignment::Center); btn.FontSize(48); xamlContainer.Children().Append(btn); xamlContainer.UpdateLayout(); desktopSource.Content(xamlContainer);