Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WPFで実践アプリ開発! 第一章 Windowsアプリの歴史

WPFで実践アプリ開発! 第一章 Windowsアプリの歴史

Ryosuke Uchiyama

January 27, 2021
Tweet

More Decks by Ryosuke Uchiyama

Other Decks in Programming

Transcript

  1. Windowsプログラミングの変遷 • Win32 API • C/C++向けのWindows GUI開発ライブラリ • 大規模なアプリケーション開発は大変で、難易度も高い •

    Microsoft Foundation Class(MFC) • C++向けのWin32 APIラッパークラス群 • 依然として仕様が難解で、あんまり知名度が上がらなかった(らしい) • Microsoft .NET Framework • WindowsアプリやWebアプリの開発・実行環境 • 共通言語基盤(Common Language Interface: CLI)の、MS自身の実装(Common Language Runtime: CLR)を保証 • WinForms, WPF, UWP(WinRT)など多くのUIライブラリ、プログラミングモデルを確立 • .NET Core • クロスプラットフォームマネージソフトウェアフレームワーク(長い) C++ C++ VB C# VB C# 時代はネイティブからマネージへ
  2. 今からWindowsプログラミングするなら? 37591 12157 91365 160208 20053 44835 0 20000 40000

    60000 80000 100000 120000 140000 160000 180000 winapi mfc winforms wpf uwp xamarin Stack Overflowのタグ別QA数 (2021年1月24日時点)
  3. アプリケーション エントリポイント • すべてのアプリケーションにはスタート地点(エントリポイント)がある • C/C++でいう main 関数 • Windowsアプリにおけるエントリポイントは

    WinMain 関数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); hInstance インスタンスハンドル hPrevInstance 他のインスタンスハンドル lpCmdLine コマンドライン引数 nCmdShow ウィンドウの初期表示方法
  4. ウィンドウ プロシージャ • Windowsアプリは、ユーザやプログラムが発生させたイベントを契機として処理を行うイベント 駆動型プログラムである • イベントを処理する専用の関数をイベントハンドラと呼ぶ • Windowsアプリにおけるイベントハンドラをウィンドウプロシージャという •

    ウィンドウプロシージャはウィンドウクラスを生成する時にコールバックとして設定する LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam); hWnd ウィンドウハンドル uMessage ウィンドウメッセージ wParam パラメータその1 lParam パラメータその2
  5. 参考文献 • API Index - Win32 apps | Microsoft Docs

    • [Microsoft] Windowsデスクトップ向け業務アプリ開発には何を採用すべきか? - 2018年9月版 – Qiita • 「.NET Core 3.0」の後継は「.NET 5」 ~2020年11月にリリースへ - 窓の杜 • What's new in .NET 5 | Microsoft Docs • ウィンドウプロシージャ - Windows API 入門 • MFCから.NETへの実践的移行計画(2/5) - @IT • 階層図 | Microsoft Docs • MVCの流れを簡単にまとめてみる - Qiita