ここから本文です

MFCとWindowsフォームとWPFの違いはなんでしょうか?

mew********さん

2012/10/2623:03:55

MFCとWindowsフォームとWPFの違いはなんでしょうか?

Visual C++ 2010を開いて新規作成の場所をみてもMFCがないんですが有料ですか?
MFCは有料?
Windowsフォームは無料ですよね?
WPFはなんですか?

ほかに違う点ってありますか?

MFCもWindowsフォームみたいにGUIでペタペタ、ボタンやウインドウをいじって設計できるのでしょうか?

閲覧数:
56,168
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

abi********さん

編集あり2012/10/2709:23:01

[アプリケーションの種類]

アプリケーションの種類と言う意味では、比較対象は下記の分類になります。


<Win32 アプリケーション>
32ビット版Windows が登場した当初からある(すなわち、Windows95の時代からある)アプリケーションです。
C言語(又はC++)で、WindowsAPI(Windows自身が持つ機能を、プログラマーのために外部公開した機能群)を使ってアプリケーションを作ります。


<MFC アプリケーション>
上記「Win32 アプリケーション」のように、WindowsAPI でプログラミングする場合、「こんには」と文字表示するだけの単純なアプリケーションを作成するだけでも、数十行のコードを書かなければなりません。
手間もかかるし、難易度が高いです。
そこで、Windows API をラップして(おおいかぶせて)、もっと簡単にアプリケーションを作成することを可能にした機能群がMFC です。
言語は、C言語、又はC++から、MFC が使えます。


<Windowsフォームアプリケーション>
マイクロソフトは、インターネット市場への進出に遅れたので、インターネット市場に弱いです。
そこで、開発環境も、Windows自体にも、どんどんインターネット仕様を取り入れる方針にしました。
そのテクノロジーの名前を.NET (ドットネット)と言います。
なお、アプリケーションも根底の仕組みから作り直されました。
それが、Windowsフォームアプリケーションです。
ところで、マイクロソフトは、.NET 自体の開発に、最初はC++ を使おうとしました。
しかし、C/C++ は、インターネットが普及する前から定着した言語ですので、インターネット仕様が考慮されていません。
そのため、.NET 自体の開発の際に、C++ の言語仕様に手を加える必要がありました。
その改良されたC++ のことを Managed C++、又はC++マネージ拡張と言います。
なお、 「どうせ言語仕様に手を加えるのならば、新たに言語を作ってしまおう」と言うことで誕生した言語が、C# です。
なお、Managed C++は、その後改良されて、標準化団体に認可されるレベルになりました。
そのManaged C++の改定版は、名前を改め、C++/CLI と言います。
ちなみに、VB も、.NET 系の言語として、大幅改良されました。
以上から、Windowsフォームアプリケーションは、CやC++ からは使えません。
Windowsフォームアプリケーションは、C#、C++/CLI 、VB.NET 等の.NET 系の言語から使います。


<WPF>
ところで、「Windowsフォームアプリケーションは、Win32 アプリケーション や MFC と比べて、根底から作り直された」と述べました。
確かに、イベントの仕組みなど、根底から取り扱い方が変わりました。
しかし、実はWindowsフォームアプリケーションは、Win32 アプリケーションをラップして作られています。
よって、原理的には、大きくは変わっていません。
そこで、本当に根底から変えて、.NET としての特色を濃くしたのが、WPF です。
ところで、JavaScript や PHP 等のWeb系のスクリプト言語は、HTML をベースにしていて、機能を拡張しています。
WPF も似たようなイメージで、XAML と言う言語 をベースにしていて、機能を拡張しています。
そのWPF と言う言語を使って、アプリケーションを作るのが、WPF アプリケーションと言うことです。
なお、WPF は言語ですが、WPF と言う言語書式かある訳ではないです。
C#書式か、VB.NET 書式から選んでプログラミングをします。



[Windowsフォームアプリか、WPF か]

WindowsフォームアプリケーションとWPF は、両方とも、.NET に基づくものです。
比べるとWPFは、.NET 的な意味では、Windowsフォームアプリケーションよりも理想的なものです。
ただし、WPF は、XAML を使って処理をしている分、重くなると言う欠点もあります(XAML は、バイナリではなく、テキストなので、処理が遅くなる)。
よって、今まではWPF の人気は悪かったですが、64ビット機や、124ビット機が増えてくれば、WPF の活用が増えてくる可能性もあります。




[ウィンドウ設計の件]

MFC は、Win32 アプリケーションに比べたら簡単ですが、Windowsフォームアプリケーションのように、簡単にはなっている訳ではないです。
ただ、MFC によるクラス(機能群)は、WindowsAPI より簡単と言うだけであって、VB.NET や C# のようなデザイン画面(ボタン等をペタペタ貼るもの)は用意されていません。

デザイン画面を使うのは、Windowsフォームアプリケーションになります。

なお、WPF は、前述の通り、一般のスクリプト言語風の扱いですので、直接コードでデザインを決める場合が多いです。
しかし、一応デザイン画面を使えます。



[有料無料の件]

Win32 アプリケーションは、無料。
Windowsフォームアプリケーションは、基本は殆ど無料ですが、例えば帳票作成ツール等、一部有料版開発環境にしかない機能もあります。
WPF も基本は無料で、一部ツール等で有料のものもあります。

質問した人からのコメント

2012/10/27 10:22:44

笑う 物凄いわかりやすい回答ありがとうございます
windows formsで作ろうと思います!

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる