10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C++/WinRTのお勉強

Last updated at Posted at 2021-02-28

・最近MFCやWTLで作るのにも飽きたなと思い、QTとC++/WinRTも触り始めました。ところが、C++/WinRT のあまりの人気のなさに惹かれて勉強した記録記事を書いてみようかなと。とりあえず、UWPアプリの開発を行います。念のために言っておきますが、UWPアプリを作るんだったら、C#で作った方が何倍も楽。それでもC++/WinRTでという人のみどうぞ。偶にHPの構成が変更になったりして、リンクが切れたりすることがありますが、そのときは探してください。

・ゆっくり更新していきます。


1. UWP 基礎編

・MFC等といった古い開発環境に慣れているとUWPで何か作ろうと思っても違いすぎて訳がわからないと思うので、まずはUWPアプリを作る上で基礎的なことをやります。
・UWPアプリではUIはxamlという言語で記述し、UIとデータを切り離しデータバインディングという仕組みでUIとデータを同期させます。また、WinRT APIは非同期APIが多いので非同期の簡単な使い方までをここでやります。

C++/WinRTでUWPその1 まずはHello World
C++/WInRTでUWPその2 Xamlの編集
C++/WinRTでUWPその3 データバインディングその1 xamlでバインドできるView Model
C++/WinRTでUWPその4 データバインディングその2 コントロールへの変更通知
C++/WinRTでUWPその5 データバインディングその3 List~コントロールへのバインド
C++/WinRTでUWPその6 図形の描画(Win2Dを使用して)
C++/WinRTでUWPその7 非同期操作IAsyncAction/co_await


2. WinRT API編

・ある程度の使い方さえわかればuwpのサンプルをみれば使えるようになると思いますが、いくつかのAPIを使ってみたいと思います。

C++/WinRTでUWPその8 ファイルピッカーと画像の表示
C++/WinRTでUWPその9 OCRとテキスト保存
C++/WinRTでUWPその10 WinUI3でWebView2を使おう
C++/WinRTでUWPその11 複数ウインドウの表示とUIの更新と その1.
C++/WinRTでUWPその12 複数ウインドウの表示とUIの更新と その2.
C++/WinRTでUWPその13 ピクチャフォルダをサムネイル表示しよう


3. MFCでもWinRT(番外編)

・WinUI 3 in UWPでExperimentalが消えたら何かを作ろうと思っていたんですが、全然消えない…
・MSがデスクトップ アプリで WinRT XAML コントロールをホストする (XAML Islands)こんな感じのページをつくったのでMFCからWinRTを利用してみようと考えてやってみました。

MFCでもWinRTその1. メッセージダイアログとAsync/co_wait
MFCでもWinRTその2. MFCアプリからWinRT APIの利用(ダイアログからOCRの利用)
MFCでもWinRTその3. MFCアプリからWinRTコントロールの表示(Buttonの表示のみ)
MFCでもWinRTその4. MFCアプリからWinRTコントロールの表示(Buttonのイベントハンドラ追加)
MFCでもWinRTその5. MFCアプリからWinRTコントロールの表示(xamlを使用してButton表示)
MFCでもWinRTその6. MFCアプリからWinRTコントロールの表示(ListViewへのバインド?)
MFCでもWinRTその7. MFCアプリでもピクチャフォルダをサムネイル表示しよう(仮部分の表示まで)
MFCでもWinRTその8. MFCアプリでもピクチャフォルダをサムネイル表示しよう(List,Gridの表示))


4. Windows App SDKでアプリを作ろう

C++/WinRTがMSから見捨てられたのでWindiows App SDKを使用して適当なアプリを作っていきたいと思います。使用言語はC++で
・まずはMSのページをよく読んで、ビルド出来るようにしてから読んでください。特に最新の WinUI/Windows アプリ SDK に更新するを忘れると非常に痛い目にあうことがあります。SDK1.2の起動時に特定のコントロールを追加するとクラッシュするバグには...
・最新版に更新したら、必ずここから安定版のランタイムを入手してインストールしてください。インストールしないとアプリが実行できません(もし、 Microsoft Visual C++ 再頒布可能パッケージをインストールしていないPCで実行する場合にはこれもインストールしてください)。
・基本的にはC++/WinRTと同じですが、namespaceが「winrt::Windows~」から「winrt::Microsoft~」へ変更になったものあったりして非常に間違いやすいものとなっていますので注意してください。他にもWinRTではありませんが、「Microsoft::WRT~」などもあり、バッティングしたりすることもあるので注意しましょう。
・準備が出来たら、アプリを作っていきましょう。

4-1. 削除が出来る画像ビューワー

4-1-1. どのようなものを作るか
4-1-2. 実装しよう(①~②まで)
4-1-3. 実装しよう(③~④まで)
4-1-4. 実装しよう(⑤~⑥まで)
4-1-5. 実装しよう(⑦~最後まで)

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?