• ベストアンサー

MFCについて

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

  • pen123
  • お礼率58% (222/377)

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

  • ベストアンサー
回答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

  • mpeg2->wmv変換

    いつもお世話になっております。 visual studio 2010 mfc プロジェクトで mpeg2ファイルをwmvファイルに変換するプログラムを作成しようとおもい、 調べてみたのですが、 windows media player sdk windows media encoder sdk というものがあるような記載があるのですが、 どうやって行えばよいのかがわかりませんでした。 上記SDK以外でもよいので mpeg2ファイルをwmvファイルに変換するプログラムのサンプル、API、dll、オープンソースなど ご存知の方、ご教授よろしくお願いいたします。 OS windows 7 visual studio 2010 professional edition

  • MFC、APIについて教えてください

    はじめまして、dio-dioです。 今回からこのOKWaveにお世話になります。 よろしくお願いいたします。 早速ですが、質問させていただきます。 私はSE目指してプログラムを勉強していますが、 MFC,APIを使って2つのファイルを比較し、合成して 新たなファイルを作成するというプログラムを 作成することになりました。 ファイルはiniファイルを用います。 私はVB6を使用したことがあるのですが、形は似ていても MFCはまったく違う形式の言語です。 今まで一度もMFC使用したことがありません。 APIの関数も使用したことがありません。 そこでみなさまに助けていただきたいのです。 MFCの使用方法がよく分かるサイト、本など知っている方 教えてください。 あと、APIを使用したプログラムを作成するに当たって、 サンプルプログラムなどが記載されていてすぐにでも プログラム作成に参考になるようなサイトを知っている方 教えてください。 とてもわがままなお願いでしょうが大変困っています。 2週間でプログラムを作成しなければならず、時間がありません。 みなさまの助けが必要不可欠です。 どうか宜しくお願いいたします。

  • APIとMFC

    WindowsでC言語で書けて(利用できて)無料のものがAPI、C++で使えて有料なものがMFC だから、アマチュアプログラマーは、APIが使いこなせるのならば、APIを使ってプログラムを 書いたほうがいい という理解で正しいでしょうか。 ここでAPIと書いたのはWin 32 APIのことです。

  • MFC

    扱うテーマはMFCやWin32APIです。 ↑これが扱える手ごろなアカデミック版での開発ツールって御座いますか? また、アカデミックではないようですが[Visual C++.NET]あたりが調べた所、値段的に手ごろな感じがしたのですが…。他に良いもの有りましたらご教示下さいm(_ _)m宜しくお願いします。

  • Visual Studio関連でAPIを使った学習方法は効率的でしょうか。

    C++の勉強をしようと思い、Visual C++ 2005 Express Edition を使って勉強しています。 本屋さんに行くと古めの本には、windowsプログラムはAPI関数も使って勉強した方がバグなどの対応にも融通が効くと書かれていますが、2008年の現時点でvisual studio関連の製品も発展していると思いますが、API関数を使ったプログラムの勉強方法は効率的でしょうか。 API関数を使ったプログラミングの本(Visual C++(1) 山本信雄著)を購入しをプログラミングを始めたばかりですが、windowsの仕組みも少しは理解出来たと思います。 またMFCなどを使ったプログラミングを行った方が良いのでしょうか。 宜しくお願いします。

  • MFCの参考書を探しています

    現在、Visual C++のMFCを勉強しています。(開発環境はVisual Studio2008) 参考にしているのは「標準講座MFC6.0」と「スタンダードVisual C++」という本です。 ただどちらの本にもドキュメント・ビュー・アーキテクチャを使用したサンプルプログラムが少なく、またその詳細についてはあまり触れられていませんでした。 やはりMFCで開発をするにはその辺を知っておくべきと思いますので、上記についての詳細やサンプルプログラムを多く載せた参考文献・サイト等ありましたら教えてください。 話は少しズレますが、MFCに関する本やサイトって少ないですよね。MFCは今後、廃れていくのでしょうか?今後のWindowsの開発は.NET系の開発言語に移っていくのでしょうか? どちらか片方に対するご意見・ご回答で構いませんので、よろしくお願いします。

  • MFCなのかWin32APIなのか

    みなさんはじめまして。グフです。 これからWindows上でC/C++(VisualStudio.NET2003) にて、Windowsアプリケーション開発の勉強を始め ようとしています。 いろんなサイトや書籍を見ている中で、Windowsアプリ の開発方法としてMFCをつかうやり方と、Win32APIで 開発する方法の2つがあることがわかりました。 これからWindowsの勉強を行うにはどちらの方法で開発 するのが望ましいのでしょうか? ケース by ケースだとは思いますが、何かアドバイス いただければと思いまして、投稿させていただきました。 やはり基礎からおさえるのであれば、Win32APIの方が よろしいのでしょうか? 今後のWinFX環境を考えると、Win32APIでの知識が無駄 になってしまうということはないのでしょうか?

  • Visual C++2005でMFC形式(?)のDLLを含んだSDKの利用について

    環境:Win2000 SP4 VS2005 pro SP1 現在大学で実験をするためのプログラムを作成しようとしています。 前任者が作った実験用プログラム(Win32API)があり、それに今年購入したハードウェアのSDKを導入することでプログラムの拡張を図っています。 (具体的には今までの測定に追加して動画解析を行おうとしてるのですが・・・) そこでそのSDKの説明書通りにインクルードフォルダを設定し、libファイルを設定しました。 それからソースに説明書通りにヘッダーをインクルードしました。 (このヘッダーファイルをインクルードすることによりSDKに含まれる3つのDLLがすべて読み込まれるらしいです) そこでとりあえずインクルードだけしてコンパイルしてみたところ SDKに含まれるヘッダーファイル中にCStringの構文エラーが出ました error C2061: 構文エラー : 識別子 'CString' 説明書によるとSDKに含まれるDLLのうち1つはwin32DLLで残り2つはMFC標準DLLというもののようです。 プロジェクトのプロパティから文字コードをマルチ、Unicodeとやってみましたがダメでした。 またMFCの利用設定もすべて試してみましたがダメでした。 今までVSをさわったことがなくC言語も少しかじったことがあるだけなので困り果てています。 回答よろしくお願いします。

  • SDKを使ったプログラミングについて

    現在Visual C++ 2005を使ってアプリケーションを作成しようとしています。 すでにWin32APIアプリケーションがあり、それにSDKを使って機能追加をしようとしています。 しかしそのSDKがMFCで書かれているためにどのように機能を呼び出すのかわかりません。 (SDK付属の説明書を読んでも全然わかりませんでした) SDKのヘッダーファイルのインクルードはできるのですがその先機能の呼び出しができません。 すごく抽象的なのですがSDKを使ったプログラミングについてわかりやすく解説しているWEBサイトなどはありませんか? また、MFCをWin32に移植する、などといった方法を解説しているところでも構いません。 ちなみにプログラミングスキルは初心者というよりは素人です。 よろしくお願いします。

  • Visual Studio 2012 + MFC

    Visual Studio 2012 + MFC に関して質問があります。 現在、Visual Studio 2010を使っています。 2010からクラスウイザードが復活し良かったと再認識しています そこで、Visual Studio 2012 + MFC を使っている方に質問なのですが クラスウイザードは健在ですか? 処理速度や使い勝手はどうですか? 質問ばかりですみませんが、2012の感想等を聞かせて下さい。 どうぞ宜しくお願いいたします。