Windowsアプリケーションについての整理 ー Visual Studio、Win32(Win32API)、.NET、.NET Framework、MFC、ATL、Windows SDK)
※以下は自分の整理のため、ざっと整理したもので間違いがあるかもです。
・まず、MFC、ATLとは?
ともにインターネット用のコントロールに使用。
MFC・・・マイクロソフトがVisual C++用に開発した、Windows用のアプリケーション構築のためのアプリケーションフレームワーク(クラスライブラリ)。使いこなすには精通していないといけない
ATL・・・COMプログラミングを簡単に行えるようにするためのマイクロソフトによるテンプレートベースのC++専用ライブラリ。ATLはある意味でCOMコントロールの開発環境としてMFCに対する軽量の代替物
・WIndows SDKとは
Microsoft Windowsで動作するアプリケーションソフトウェアを作成するためにマイクロソフトが無料で公開しているソフトウェア開発キット (SDK)
・VisualC++でプログラムを作る方法
SDKで作る・・・WIndowsAPIを直接使う(面倒だが分かりやすく、初心者向け)
MFCで作る・・・STLを使うのと同様に、Microsoftのクラスライブラリ使って間接的にWIndowsAPIを使う。
MFCのDLLを一緒に配布しなければ作成したプログラムが動かない。
Windows プラットフォームはMFC・ATLから.NET に移行しようとしている。
・Visual Studioとは
Visual Studio(開発環境)
→作ったプログラム・・・・・・・・.NETプログラム(一方、普通のプログラムは「Win32プログラム」)
→.NETプログラムの実行環境・・・・.NET Framework(共通言語ランタイム (CLR) と、.NET Framework クラス ライブラリで構成)
・Win32APIと.NET Frameworkの違い
そもそも、Win32(Win32 API)は直接WIndowsの機能を呼び出すのに対し、.NET FameworkはそのWin32API同様の機能をクラスライブラリとしてまとめたもの
.NET Frameworkの方がGUIを作りやすいらしい(メモリ管理も自動で行ってくれる、とのこと)
ただし、.NET Frameworkだけでは実装できないこともある。(.NET Framework内でWin32APIを呼び出す場合もあり、その場合のメモリ領域など)
細かな違いはここを見れば分かる。
@IT:連載:.NETの動作原理を基礎から理解する! 第2回 .NETアプリケーションが起動する仕組み
つまり、Visual C++(Visual Studio)で作成したプログラムの実行には.NET Frameworkが必要だが、Visual C++(Visual Studio)には最初からそれが入っている、と。
・Visual StudioとVisual C++の関係
Visual StudioにはVisual C++、Visual C#、Visual Basic全て入っている
無償版はExpressとしてVisualC++などが個別に配布されている
ちなみに備忘録として、Webアプリを作るためのものもある様子(Visual Web Developer 2010 Express)
・Visual C++と、Visual C#、Visual Basicの違い
Visual C++は「.NET プログラム」も「Win32プログラム」も作れる
そう考えると、VIsual C++の方が全部カバーできるのでよいのではないか?と初心者ながらに思ったり・・・。
・機能制限
Visual C++ 2008 ExpressからはWindows SDKが同梱されている
64ビットアプリの開発に際して、Visual C++ 2010 Expressまでは同梱と別のWindows SDKをインストールする必要がある。
MFCが使えない。
ATLが使えない。
Visual Studio エディションでの Visual C++ ツールおよびテンプレート
・多数の言語やプラットフォーム、拡張機能を使う
Visual Studio Communityというものが登場したらしいので備忘録として。
ATL/MFCも付属している。
無償で利用するためには規約が厳しいらしい。
「Pro相当機能が無料!」と話題になった「Visual Studio Community」の光と“影” - Build Insider