• ベストアンサー

MFCについて

最近、Visual Studio 2005で、win32アプリの作成を勉強しようと思い、 猫でもわかる・・・のサイトを参考にさせて頂き勉強を始めたのですが、 色々と質問させてもらってるうちに、MFCというものの存在を知りました。 具体的にどんな物なのかも解ってないのですが、 SDKで組んでいくよりも、比較的楽にプログラムが組んでいけ(ソースが少なくていい)、MFCの方がメジャーに使われている、というようなことを聞いたのですが、 実際どちらを勉強するべきなのでしょうか? APIについてはどちらも勉強しなければならないと聞いたのですが、 MFCの方がメジャーで楽ならMFCの勉強した方が良い気がしたので 詳しい方教えていただけませんか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

GUI形式のソフトですね。もちろん作れますよ。GUIの部分を作るのにもっとも簡単なのも.netframeworkですよ^^.netframeworkを使用するベースとなる言語はC#が良く使われています。C#はC++に似た感じでC++の経験があれば、直ぐに使えるようになるでしょう。C#を使わないならC++/CLIというC++に似た言語を使う事になります。どちらも殆ど同じなのでどちらを勉強しても良いですが、C#の方がメジャーなのでそちらの方が良いと思います。言語はどれも大して変わらないので別にうんうんと悩む必要はありません。適当に一つ選んで慣れて下さい。慣れたらJavaもC++もC++/CLIも、C#も同じじゃんと思うようになるでしょう。一度Win32APIでウィンドウを表示するだけのソフトを書いてみては如何ですか?初めてコンソールからWindowsプログラミングに移る時にびっくりすると思います^^何この大文字wwwとかね。打つのしんどーいとかww。それから.netframeworkを使用したら感動すると思います。まあ、頑張ってください^^

pen123
質問者

お礼

とても詳しく教えて頂きありがとうございます! 自分で調べるより、はるかに早く様々なことが知れて とても助かります!感謝です! ウインドウを表示させるプログラムは「ねこでもわかる・・・」 のところで、この前見ました!! ホントビックリしました!!言葉じゃない~(><)って感じでした^^; .netframeworkはC#の本を買って勉強すればいいということは 理解できたんですけど、.netframeworkとはC#で使える機能(関数群?)のようなものだと理解すればいいんですかね?

その他の回答 (6)

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.7

>.netframeworkとはC#で使える機能(関数群?)のようなもの そうだともいえますが、もっとスケールの大きなものです。 先にインタプリタと書きましたが、まさしく翻訳機になります。 VB.Net----------.NetFramework-------------OS(WindowsAPI) こんな関係になります。思想としてはJAVAと同じものです。 .NetFrameWorkが提供されている環境ではどこでも同じプログラムを動かせます。 (UNIXで提供されていればUNIXでも可能になるでしょう) .NetFrameworkがWindowsAPIとの橋渡し役をすることになります。 橋渡しできない場合や直接使いたいときなどは APIを直接使うことになりますので、APIの知識も必要なのです。 (SDKプログラムを体験すれば嫌というほどAPIを知ることができます) 大袈裟にいえば他のOSが間に割って入るようなものですから、 とてもではないですが、速度の遅い昔のパソコンでは無理がありました。 .Netの普及にはCPUのパワーも大事ということです。

pen123
質問者

お礼

解りやすい説明ありがとうございました! なるほど、よくわかりました! とりあえずC#を勉強し、後々APIも勉強することで、 細かい操作も出来るようになっていけそうですね。 ありがとうございました!

  • fogin
  • ベストアンサー率0% (0/2)
回答No.5

MFCについては、MicroSoftは見放しつつあるように感じます。 Windowsプログラミングでは、現在では業務系向けとされている.NETフレームワークへ急速に移行しつつあります。 なおGUIを作ることに関しては、MFCのC++よりも、.NETフレームワークに属するC#、VB.NETの方がはるかに簡単で安全で、エディタの支援も充実しています。簡単にまとめると ・MFC(C++) 処理が高速。大抵のWindows環境で動く。オープンソース(↓の圧縮や画像処理に関するコードが充実している)の主流言語であるCを流用しやすい。資料が豊富で長年の蓄積がある。 難解。ポインタを乱用しがちで危険。ガベージコレクタがなく、パッケージングが中途半端でC#などよりも書くコードの量が大きく増えやすい。 ・.NETフレークワーク(C#、VB.NET) 平易。MFCとくらべ短いコードでより複雑で安全な機能を実現できる。オブジェクト指向を学びやすい。(自動入力など)エディタの支援が充実している。 GUIでは処理速度はMFCより劣る。実行に.NETフレームワークのインストールが必要。 こういう感じになります。 なお.NETフレームワークやMFCは完全にWindowsの機能をカバーしていません。APIの知識は、そうしたカバーしていない機能を使う際に必要になってきます。

pen123
質問者

お礼

ありがとうございます!! 特に両者の特徴の違いは参考になりました! 将来性を考えると、やはりC#の勉強をしようかと思います。 ありがとうございました。

  • furyfox
  • ベストアンサー率56% (58/103)
回答No.4

>SDKで組んでいくよりも、比較的楽にプログラムが組んでいけ(ソースが少なくていい)、 >MFCの方がメジャーに使われている、というようなことを聞いたのすが、 MFCはWin32APIをある程度理解してから使わないと、使いこなせないですし まったく応用が利かないでしょう。 (ちなみにMFCはソース付きです。MFC内部で例外を吐かれる場合原因を調べる為にソースを追う事もあります。) ところで楽にプログラムを組む事が目的ならC/C++ではなくC#を選んだ方が良いと思います。 C++で.NET Frameworkを使うならC++/CLIというC++の拡張言語を使う必要があり 初心者向けではありません。 余談ですがVistaは当初カーネルに.NET Framework3.0(当時はWinFX)を実装する予定でしたが 断念しVistaも基本はWin32上で動いています。 Visual Studio2005用のFramework3.0用のSDKがMSDNからダウンロードできるので 興味があるなら見てみると良いでしょう。 次期WindowsでもWin32APIが使えなくなることはないでしょうが位置づけは変わる可能性は高いかもしれません。 >netframeworkが一番簡単で新しいとは知りませんでした。 新しいかどうかはあまり関係ないです。 MFC自体ができたのは10年以上前ですが、バージョンは更新されています。 .Net Frameworkに関しても1.0がリリースされたのはもう5年以上も前の話です。 そもそもC言語なんて30年以上前の産物ですからね(仕様は新化しています。) >例えば、GUI形式のフリーソフト >そういうのも作れるんですよね? 作れます。後ご存知かもしれませんが、 .NET Frameworkのソフトは、実行環境に.NET Frameworkのランタイムが入っていないと動きません。 (Vistaでは.NET Framework3.0の実行環境が標準で入っています)

pen123
質問者

お礼

ありがとうございます! 皆さんのおかげで、どういうものかが大分解ってきました! 初心者に丁寧に教えていただきありがとうございます!! とても助かりました!

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.3

Windowsプログラミングは1からやると大変ですからね。 猫さんのところでSDKみたら分かるでしょうけど。 そういうインタフェースをオブラートに包んで生産性を上げたのがMFC。 これも10年以上前の産物です。 そして10年経ったらMFCもザルになってきた。 しかも新しい技術も色々出てきた、Vistaでカーネル変更(これが一番主かな) などなどの理由で.Netframeworkが登場してきました。 .Netはインタプリタといえばインタプリタですが、 CPUの速度も問題ないくらい速いし、回帰しても問題ないのではないでしょうか。 ゲームなどの速度を要求される処理がネイティブなC(MFC不可)を扱えばいいかと。 いずれにしてもMFCは昔から使っていた人はそのまま使えばいいし、 新しく勉強する人が習得するものではないと思います。

pen123
質問者

お礼

丁寧な説明ありがとうございます! 自分で調べていたら、ここまでハッキリとした 理解は出来ないと思います。 とても助かりました。ありがとうございます。

回答No.2

ああ、そうそうWin32Apiはまあ、覚えておいて損はないですよ。細かい所で必要になる場合があるんで。

回答No.1

どっちでも良いです。2005なら.netframeworkは駄目なんですか?正直、MFCやWin32Apiの方が軽いソフトを作れますが、.netframeworkはMFCやWin32Apiに比べ簡単ですよ。まあ、全部覚えたら良いだけですよ。今からMFCとかWin32Apiとか古いです。仕事で使用するならまだしも。。

pen123
質問者

お礼

回答ありがとうございました。 netframeworkが一番簡単で新しいとは知りませんでした。 ならば、netframeworkを勉強するのが一番良いみたいですね。 まだどれも勉強し始めてないので、とりあえず最初は なるべく簡単にwindowsプログラムが作れるようになりたかったので。 ありがとうございました。 早速netframeworkのサイトや本を探して勉強してみたいと思います

pen123
質問者

補足

すみません。大丈夫だと思うんですけど、一応聞いておきたいのですが、 自分としては、例えば、GUI形式のフリーソフト (圧縮ソフトとか、描画ソフトなど)を作れたらいいな~ と思ってたのですが、そういうのも作れるんですよね? (なんかネットみたら、ウェブ系のソフトがメインと書いてあったので)

関連するQ&A