c++

WinUI - データバインディング(Bindings->Update)

C++ で WinUI 3 ライブラリを使う この記事は試行錯誤の結果をまとめたもので、WinUI の正しい使い方ではないかもしれません。 下図のようにTextBox に入力した文字列をもう一方のTextBoxに反映する方法を考えます。 XAMLはこんな感じです。入力用のTextBox…

WinUI - データバインディングできるモデルを追加する

C++ で WinUI 3 ライブラリを使う データバインディングできるモデル (class) をプロジェクトに追加しようとしたとき、その方法がわからず苦労したので紹介します。 Visual Studio のソリューションエクスプローラを開き、プロジェクトを選択した状態で右ク…

WinUI - ナビゲーションのウィンドウに設定ボタンを表示する

C++ で WinUI 3 ライブラリを使う NavigationView の IsSettingsVisible 属性を True にすると設定ボタンを表示します。 <NavigationView IsSettingsVisible="True"> メニューを選択したときのイベントハンドラでは、IsSettingsSelected, IsSettingsInvoked 関数で設定ボタンが押されたか判断できます</navigationview>…

WinUI - 新しい UserControl を追加する

C++ で WinUI 3 ライブラリを使う 新しい UserControl をプロジェクトに追加しようとしたとき、その方法がわからず苦労したので紹介します。 Visual Studio のソリューションエクスプローラを開き、プロジェクトを選択した状態で右クリックのポップアップメ…

WinUI - メニューを選択したときのイベントを実装する

C++ で WinUI 3 ライブラリを使う NavigationVeiw のメニューを選択したときのイベントを処理する方法を紹介します。 NavigationView のメニューを選択すると ItemInvoked イベントが発生します。また選択しているメニューが変化したときは SelectionChanged…

WinUI - ToggleSwitch のラベルをボタンの左側にする

C++ で WinUI 3 ライブラリを使う ToggleSwitch のラベルをボタンの左側にするには FlowDirection に RightToLeft を設定します。 <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="4"> <ToggleSwitch BorderBrush="Red" BorderThickness="1"/> </toggleswitch></stackpanel>

WinUI - 新しい Page を追加する

C++ で WinUI 3 ライブラリを使う 新しい Page をプロジェクトに追加しようとしたとき、その方法がわからず苦労したので紹介します。 Visual Studio のソリューションエクスプローラを開き、プロジェクトを選択した状態で右クリックのポップアップメニューを…

WinUI - 起動時のウィンドウサイズを指定する

C++ で WinUI 3 ライブラリを使う アプリを起動したときのウィンドウサイズは、MainWindow のコンストラクタでAppWindow::Resize を使って指定できます。 #include <winrt/Microsoft.UI.Interop.h> #include <winrt/Microsoft.UI.Windowing.h> MainWindow::MainWindow() { InitializeComponent(); auto hWnd = stuff::getHwn</winrt/microsoft.ui.windowing.h></winrt/microsoft.ui.interop.h>…

WinUI - XAML で日本語を使ったときの文字化けを直す

C++ で WinUI 3 ライブラリを使う XAML ファイルのメニュー名やボタン名などに日本語を使うとアプリを実行したときに文字化けします。 <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <Button x:Name="myButton" Click="myButton_Click">ボタン押してね</Button> </StackPanel> このような時は XAML ファイルを UTF-8 の文字コードで保存しましょう。 XAMファイルを開いた状…

WinUI - ウインドウハンドル (HWND) を取得する

C++ で WinUI 3 ライブラリを使う ウィンドウハンドルを取得する方法を紹介します。 ウィンドウハンドルは IWindowNative::get_WindowHandle で取得できるので、関数にしてみました。 また IWindowNative クラスは microsoft.ui.xaml.window.h で定義されて…

WinUI - XAML要素のインスタンスにコードからアクセスする

C++ で WinUI 3 ライブラリを使う XAMLで定義した要素のインスタンスに C++ のコードからアクセスするには、XAML要素に Name 属性をつけます。そうすると XAMLのコンパイル時に Generated Files下にSetter/Getter 実装したファイルが作られ、C++ のコードか…

WinUI - イベントハンドラを追加する

C++ で WinUI 3 ライブラリを使う Button などのコントロールにイベントハンドラを追加したかったのですが、その方法がわからず苦労したので紹介します。 Visual Studio で XAMLファイルを開き、XAML要素にイベントの属性名と = を入力すると <新しいイベン…

WinUI - ナビゲーションの位置を指定する

C++ で WinUI 3 ライブラリを使う NavigationView の表示位置は、PaneDisplayMode プロパティを使います。 図のようにナビゲーションメニューを上側に配置するには、Top を指定します。 PaneDisplayMode に指定できる値には、Auto, Left, LeftCompact, LeftM…

WinUI - NavigationView を使う

C++ で WinUI 3 ライブラリを使う 図のようなナビゲーションメニューを持つアプリを作るには、NavigationView を使います。 MainWindow.xaml の Window 要素に NavigationView を配置します。

WinUI 3 with C++ 入門

WinUI 3 ライブラリは C++ で利用できます。 お約束の Hello, World! を表示する Windows アプリを作ってみようと WinUI ライブラリを触ってみましたが、思いのほか難しい。エラーを検索しても C# での説明だったり、 WPF や UWP のライブラリの説明だったり…