スポンサーリンク

Win32API+WinRT+XamlなGUIを.NETやUWPなしで作成する(2)ボタン追加+イベントハンドラ追加

ボタンを追加し、クリックしたときのイベントハンドラを追加する。

include

// イベントハンドラのため追加
#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);

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: