• ベストアンサー

.Net Framework APIがあればMFCはいらないのでは?

最近Windowsプログラミングに興味を持ちましていろいろと調べている所なのですが、疑問に思ったので質問させて下さい。 質問の内容はタイトルどおりなのですが、 windowsのシステムが.Net Frameworkに統一されようとしている今、.Net Framework APIがあればMFCを新しく勉強する価値は殆どないと思うのですが、この考えは間違っているでしょうか? 例えば、下の本(実物はまだ見てません) http://www.amazon.co.jp/exec/obidos/ASIN/4797324201/249-5720925-3989928 では「 MFCを利用したWindowsネイティブプログラムから,最新の.NETアプリケーションの作成方法まで,..」 と紹介されてますが、VC++.NETでプログラミングするのに、なんでMFC?なんて思って仕舞うのですが、MFCでないと出来ないことがあるのでしょうか?

noname#9431
noname#9431

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>.Net Framework SDK + .Net Platform SDK + VC++ Toolkit > >を使えば、MFCでなく、.Net Framework APIを使ってダイナミックリンクの不要のnative codeまで >落とせるものと考えていたのですが、 >それがそもそもまちがいなのでしょうか。言い換えると、上の組み合わせではnative codeまで落とせても、 >MFCまたはWin32APIを使わなければランタイム不要のコードを生成することができないのでしょうか。 はい、現状では間違いです。.NET Framework自体が巨大なRuntimeであると思ったほうがいいでしょう。.NET FrameworkがOSに統合されて初めてそう言えます。 また、.NET Frameworkを使用するということは将来的にもnative codeはなりません。生成物はアセンブリとなります。 >Win32APIはCのライブラリ。 >MFCはVC++のライブラリ。 >VC++.NETにはその理念に相応しいライブラリで記述したいよね。 ここにも認識に誤りがありますね。 Win32APIは、Windowsのライブラリです。Cのライブラリではありません。Windowsの機能を直接使うためのものです。 インターフェイスもC的なものやC++的なもの、VBで扱いやすいCOM等さまざまです。 VC++.NETはあくまでもVC++のバージョンアップしたもので.NET Frameworkが使えるものという位置づけです。 .NET Frameworkのためだけのものではありません。 それに、VC++で.NET Frameworkの開発は他の方も回答しているとおりあまり適していません。MSは専用の言語であるC#を準備するくらいですから。 ですので、VC++.NETに適しているのライブラリが.NET Frameworkだというのもちょっと・・・という感じですね。私は、MFCやATLになると思います。 >もし、.Net Framework APIがWin32APIの完全な代替物であるのであれば >(この点は自信がないので質問に含まれています。) 現時点では違いますね。APIを必要とする機能だらけです。MFCであってもすべてのWin32APIを包括しているわけでもありませんし。 まぁ、でも次期OSではそうなるかもしれませんが。 >これからVC++を学ぼうとする人間がMFCを学ぶ意義は、将来性の面からいってかなり薄れているのではないか? MFCは、Windowsが存在する限り、おそらくなくならないでしょう。そういう意味であれば、将来性はあるフレームワークです。 >だとしたら、なぜ、.Net Framework APIを強調したVC++.NETの解説が見当たらないのだろう? というくらいに弱めておきます。) それは、.NET FrameworkがVC++の一部ではないからです。 .NET Frameworkはさまざまな言語から利用できます。C#やVB.NETの解説本が.NET Frameworkを中心に書かれているのはこれらの言語の基本となる技術が.NET Frameworkだからです。 C++は.NET Frameworkの上に成り立っているわけではないですよね。 「適材適所」という言葉を使ったのは、.NET Frameworkを使用可能か?.NET Frameworkを簡単に使えるか?ということでもあります。 >だから、せっかくVC++「.NET 」なら >それ相応のAPIで書きたいなとみんな思わないのかな? >それともそうしないのは何か理由があるのかな? というくらいのレベルの人であれば、VC++での.NET Frameworkの解説を望んでいるのではなく、.NET Framework自体の解説を望むと思いますよ。 メリットは、「.NET Frameworkに対応した任意のプラットホームで実行可能」というだけではなく、「任意の言語で作成されたアセンブリも相互利用できる」こともなんですから。 .NET Frameworkを理解できる人であれば、言語に依存した単純な使い方さえわかれば、それ以上の言語に依存した解説など不要でしょうし。

noname#9431
質問者

お礼

再びのご回答ありがとうございます。 しかも私がまさに知りたかったことに詳細に答えて頂き感謝です。 私はLinuxにおけるC/C++自体の経験は少しあるのですが、 Windowsのことは幾ど何も知らない状態でありまして、 自分なりに結構調べたつもりなのですが、 まだまだいろいろと誤解があったようです。 しかも出発点ですでに誤解があったのですね。 >VC++.NETはあくまでもVC++のバージョンアップしたもので.NET Frameworkが使えるものという位置づけです。 .NET Frameworkのためだけのものではありません。 の説明でかなり納得できました。 VC++.NETはシステムを直に弄るところで偉力を発揮するものであり、その為のライブラリは基本的には(現時点では)Win32APIであり、それをVC++用にラップしたMFCを学ぶ意義は将来性を考えても十分にある、というように理解いたしました。 ありがとうございました。

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

あなたの言っていることは「アセンブラがあればプログラミングできるのに、どうして他の言語が存在するんですか?」というのと変わりません。 これって適材適所ですよね?

noname#9431
質問者

お礼

ご回答有難うございます。 んー、そう言っているつもりはなかったのですが、「適材適所」と言う点に関しては、理解できます。 (でも「アセンブラがあれば..」という例えは、私が言いたいこととは少しはずれているかな?と思います。 しかし、そうおっしゃりたい気持になったことはなんとなく分ります。) このような質問をさせていただいたの背景をもう少し説明させていただくと、 将来性を考えた、もう少し思想的、理念的なモノのつもりなんです。 (しかし、質問の言い方は強すぎました。 VC++が.Net Frameworkに含まれることにより、 もし、.Net Framework APIがWin32APIの完全な代替物であるのであれば (この点は自信がないので質問に含まれています。) これからVC++を学ぼうとする人間がMFCを学ぶ意義は、将来性の面からいってかなり薄れているのではないか? だとしたら、なぜ、.Net Framework APIを強調したVC++.NETの解説が見当たらないのだろう? というくらいに弱めておきます。) Win32APIはCのライブラリ。 MFCはVC++のライブラリ。 VC++.NETにはその理念に相応しいライブラリで記述したいよね。 という感じです。 もちろん.NET原理主義者でもなんでもないので(笑) ご指摘も理解できます。 しかし、Linuxも.Netの構想内に入る「かも」しれないという可能性があるのなら、 MFCでなく.NETのAPIで記述したいと思うのが人情というものでは?と思ったりもします。 .NETのAPIで記述しておけば、Linuxが.Net Frameworkに対応するなんてことが起こったら、ソースを幾どそのまま使えます。MFCを使っていたらそんなことはできません。 だから、せっかくVC++「.NET 」なら それ相応のAPIで書きたいなとみんな思わないのかな? それともそうしないのは何か理由があるのかな? と思って質問させて頂きました。

回答No.2

.NETプログラムは確かにいろいろな言語で利用できるよい仕組みだと思うのですが、デバイスドライバなどWindowsの内部まで踏み込んだプログラムは.NETでは難しいと思います。また実際先進的なプログラム(DirectXなど)のSDKはWindowsAPIの直接利用またはMFCを前提とした開発環境となっていますので企業の開発ではMFCはまだまだ必要でしょう。少なくとも現状では.NETは内部でネイティブコードに翻訳しながら実行しますので速度的には不利です。

noname#9431
質問者

お礼

ご回答有難うございます。 >.NETプログラムは確かにいろいろな言語で利用できるよい仕組みだと思うのですが 私も今回しらべてみて、.Netの構想は面白いと思いました。これまでMicrosoftは嫌いでしたが、.Netの構想ははなかなかよいと感じました。VC++6.0の後継として、VC++7.0ではなくVC++.NETとしたのは、Microsoftの.Net Frameworkに対する気合の現れのように感じられます。 とすれば、現状でMFCを使う理由としてmountbookさんの仰ることは良く理解できるものですが、やっぱり、win32APIのラッパとしてはMFCではなく.Net Framework APIを使うべきなのではないかなあ、そのほうが、実装の変更に影響されないし、それこそ.Net Frameworkの理念にかなうのではないか?と思いました。 しかし、#1のお礼の欄に書かせていただいたように、 ひょっとして、.Net Framework APIではランタイムが必要なコードになってしまうのでしょうか。。。 私の感じとしましては、VC++.Netは C++ + Win32API + .Net Framework ラッパ というイメージなので、MFCでなく、.Net Frameworkラッパを使うべきでないかな?と思うわけです。 (現時点でまだ細かいところはWin32APIを使うとしても。)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

Frameworkのアプリを作るのにVC++.netは普通選択しません。 VC#.netかVB.netを使います。 VC++.netを選択する理由はネイティブコードのアプリを作るため だと思います。MFCのライブラリはスタティックリンクできる為 ちょっとしたWindowsアプリを作成する時には効率的でしょう。 (ちなみに市販のパッケージソフトでFrameworkを使ったものなんて ありませんし、中間コードである事は逆コンパイルされやすい 危険もあります。) >MFCでないと出来ないことがあるのでしょうか? MFCって単にSDKをラッピングしたclassです。 むしろMFCだけでは出来ない事があるかもしれません。

noname#9431
質問者

お礼

ご回答ありがとうございます。 >VC++.netを選択する理由はネイティブコードのアプリを作るため だと思います。MFCのライブラリはスタティックリンクできる為 ちょっとしたWindowsアプリを作成する時には効率的でしょう。 .Net Framework SDK + .Net Platform SDK + VC++ Toolkit を使えば、MFCでなく、.Net Framework APIを使ってダイナミックリンクの不要のnative codeまで落とせるものと考えていたのですが、それがそもそもまちがいなのでしょうか。言い換えると、上の組み合わせではnative codeまで落とせても、MFCまたはWin32APIを使わなければランタイム不要のコードを生成することができないのでしょうか。もし御存じでしたらご教授いただけたら幸です。 >MFCって単にSDKをラッピングしたclassです。 むしろMFCだけでは出来ない事があるかもしれません。 その点は一応、理解しているつもりでおりました。 Object Orientedなインターフェースを持つAPIがフリーでほしかったのですが、MicrosoftはフリーではMFCを提供していないようでした。 ところが、下のURLをみると、.Net Framework APIもWin32apiのラッパのようなもののようで、 またインターフェースは当然OOなので、 これを使えばMFCも不要なのでは?と思ったしだいです。 でも、書籍をしらべたりすると、MFCを説明しているものが多かったので、なんでかな?と疑問に思いました。 http://www.microsoft.com/japan/msdn/net/general/win32map.asp

関連するQ&A

  • .NET FrameworkとWin32 API

    趣味でプログラミングを始めた初心者です。 Win32 APIを習得しようとしていますが、Windows Vistaから.NET Frameworkが標準のAPIになると聞きました。Win32 APIは引き続き搭載するとのことですが、これが搭載されなくなれば、プログラミングを続けられなくなります。 いずれは、.NETのプログラミングを習得するつもりですが、早めに習得すべきでしょうか?それとも当面はWin32でも大丈夫でしょうか? 勝手な質問ですみません。

  • OpenGL参考書

    これからOpenGLを勉強しようと考えているのですが、 参考書として以下の2冊のうち、どちらを買うべきか迷っています。 「図解 OpenGLによる3次元CGアニメーション 」 http://www.amazon.co.jp/exec/obidos/ASIN/4274200345/ 「OpenGLによる3次元CGプログラミング 」 http://www.amazon.co.jp/exec/obidos/ASIN/433902399X/ ちなみに大学ではWin、家ではMacを使っています。 ご意見がありましたら、お願いします。

  • 世界史Bの問題集について

    高校1年生です。まだ1ヶ月も経っていないのにもう世界史が全然分からなくなってきました。教科書を読んでも全然分からないのです。そこで参考書や問題集を使って克服していきたいと思っています。 (1)参考書について (1)http://www.amazon.co.jp/exec/obidos/ASIN/4578010791/qid=1146324121/sr=1-11/ref=sr_1_2_11/503-2531548-7509509 (2)http://www.amazon.co.jp/exec/obidos/ASIN/4578010686/qid=1146324180/sr=1-38/ref=sr_1_2_38/503-2531548-7509509 上の2つのどちらか (2)問題集について ★一問一答式 (1)http://www.amazon.co.jp/exec/obidos/ASIN/4634039001/qid=1146323594/sr=1-9/ref=sr_1_10_9/503-2531548-7509509 (2)http://www.amazon.co.jp/exec/obidos/ASIN/4634038900/qid=1146324381/sr=1-2/ref=sr_1_10_2/503-2531548-7509509 上の2つかどっちか ★総合問題 (1)http://www.amazon.co.jp/exec/obidos/ASIN/4634034506/qid=1146324470/sr=1-17/ref=sr_1_2_17/503-2531548-7509509 (2)http://www.amazon.co.jp/exec/obidos/ASIN/4578010996/qid=1146324510/sr=1-25/ref=sr_1_2_25/503-2531548-7509509 (3)http://www.amazon.co.jp/exec/obidos/ASIN/4634048000/qid=1146324510/sr=1-30/ref=sr_1_2_30/503-2531548-7509509 上の3つのどれか それぞれどの問題集がいいか迷っています。おすすめな方はどれでしょう?これ以外でもこれがおすすめっていうのがあれば教えてください。お願いします。

  • .NET Frameworkって一体何?

     近年、.NET Frameworkという言葉が流行っていますが、これは一体何なのでしょうか?  従来のようにWin32APIやMFCを使ったアプリケーションとは、かなり質が異なるもののように思われます。  .NET Frameworkに対応したアプリケーション開発ができると、どのような利点が生まれるのでしょうか?  また、次期WindowsといわれるLonghornでは、.NET Frameworkが非常に重要視されているように思います。 そして、こうした時代の流れを察するに、Win32APIやMFCのみでのアプリケーション開発をしてきた私も、.NET Frameworkとは一体何かを知らなければいけないと思うようになりました。  私はまだ何も確証は持てないのですが、.NET Frameworkはコンポーネント技術と何かしら関係があるように思います。しかし、そのような気がするだけで、何がどうなって、.NET Frameworkが構成されているのかまったくわかりません。.NET Frameworkがあると、将来どのようなことが実現可能になるのですか?

  • 指輪物語 追補編

    追補編を買おうと思っているのですが、 http://www.amazon.co.jp/exec/obidos/ASIN/4566023737/ref%3Dnosim/straydogsroos-22/249-9186518-7665927 http://www.amazon.co.jp/exec/obidos/ASIN/4566023605/ref%3Dnosim/straydogsroos-22/249-9186518-7665927 というのがあって、どちらにしようか悩んでいます。 おすすめはどちらでしょうか?

  • 拳銃の資料を探してます

    創作活動をしていて、小説を書いている者なのですが、その中に拳銃の描写を入れようとして困っています。 生まれてこのかた、実物はもちろんモデルガンにすら触れたことがないので、そもそも拳銃というものはどういう風に扱うものなのかさっぱり解りません。 ネットの検索で作動方式の違いなんかは少し理解できたのですが、具体的に描写するためにはほど遠いです。 メンテナンスのためには分解しなきゃいけなかったりすると思うのですが、そこらへんがよく解りません。 なので参考のために資料を購入しようと思っています。 以下の書籍や、それ以外にどのような資料がオススメか、教えていただきたいです。 現代ピストル図鑑 http://www.amazon.co.jp/exec/obidos/ASIN/4198919879/250-9813032-4617839 現代軍用ピストル図鑑 http://www.amazon.co.jp/exec/obidos/ASIN/4198916608/250-9813032-4617839 銃器使用マニュアル http://www.amazon.co.jp/exec/obidos/ASIN/4887185774/ref=pd_ecc_rvi_f/250-9813032-4617839 図説・世界の銃パーフェクトバイブル http://www.amazon.co.jp/exec/obidos/ASIN/4056037191/ref=pd_sim_dp_3/250-9813032-4617839

  • ギター教本について

     ギター暦2年なのですが、教本がたくさんありすぎて迷っています。こういう質問をすると、「自分の気に入ったやつを買えば?」とか「自分に合ったやつ買えば?」とか返されるのがオチなのですが、正直自分に合っているのがどれなのかが分かりません。だから率直な意見をお願いします。   それで、以下の教本でオススメのものをお願いします。 他にもあれば教えてください。  主に速弾き志向で、実践的なフレーズが載っているモノをお願いします。 左と右を一刀両断! http://www.amazon.co.jp/exec/obidos/ASIN/4845607166/qid=1143122778/sr=1-2/ref=sr_1_10_2/249-6017361-0182706 地獄のメカニカルトレーニング http://www.amazon.co.jp/exec/obidos/ASIN/4845610906/qid=1143129835/sr=1-1/ref=sr_1_10_1/249-6017361-0182706 1日15分!ステップアップ式トレーニング http://www.amazon.co.jp/exec/obidos/ASIN/4845611732/qid=1143130054/sr=1-1/ref=sr_1_0_1/249-6017361-0182706 これが弾けるか!ギター極限速弾きバイブル http://www.amazon.co.jp/exec/obidos/ASIN/484561166X/qid=1143123007/sr=1-1/ref=sr_1_10_1/249-6017361-0182706 音速!速弾きギタースタイル http://www.amazon.co.jp/exec/obidos/ASIN/440114337X/ref%3Dnosim/yahoo-ps-22/249-6017361-0182706 みるみる上達!究極のギター練習帳 http://www.amazon.co.jp/exec/obidos/ASIN/4845604728/qid=1143129888/sr=8-1/ref=sr_8_xs_ap_i1_xgl/249-6017361-0182706 ガンガン上達!最強のギターソロ練習帳 http://www.amazon.co.jp/exec/obidos/ASIN/4845606291/ref%3Dpd%5Fbxgy%5Ftext%5F2/249-6017361-0182706 スイスイ上達!究極のギター練習帳(実践編) http://www.amazon.co.jp/exec/obidos/ASIN/4845607522/ref=pd_sxp_elt_l1/249-6017361-0182706    

  • 軍事関係の書籍について、感想をください

    http://www.amazon.co.jp/exec/obidos/ASIN/4890631879/qid=1128852484/sr=8-1/ref=sr_8_xs_ap_i1_xgl/249-4113642-6124338 http://www.amazon.co.jp/exec/obidos/ASIN/4384024258/ref=pd_sim_dp_3/249-4113642-6124338 http://www.amazon.co.jp/exec/obidos/ASIN/438402424X/ref=pd_bxgy_text_2/249-4113642-6124338 この三冊の購入を迷っているのですが、一高校生のためさすがに金額的に辛く; これらの本の感想や、もしくはお勧めの書籍があれば教えてください。

  • ゼブラーマンについて

    アマゾンでゼブラーマンと検索したらコミック版が出てきたのですが・・・・・ http://www.amazon.co.jp/exec/obidos/ASIN/4091872719/ref=sr_aps_b_/250-0477253-2257044 あと一冊 http://www.amazon.co.jp/exec/obidos/ASIN/4048735217/ref=sr_aps_b_1/250-0477253-2257044 が出てきたのですが小説でしょうか? それとも解説本? 小説だったら購入しようかと考えているのですが・・・・・・ どうか教えて下さい。よろしくお願いします。

  • 2つのナルニア国物語の朗読CDの違い

     お世話になっています。どのカテゴリーで質問すればいいか分からなかったのでここで質問させていただきます。ナルニア国物語の朗読のCDを購入しようと思っているのですが、アマゾンで見たところ2種類あるみたいなのですが、朗読をしている人が違うという以外の違いが分かりません。内容が少し違ったりするのでしょうか?回答よろしくお願いします。 http://www.amazon.co.jp/exec/obidos/ASIN/0694524751/qid=1127443447/sr=1-5/ref=sr_1_10_5/249-0693061-7820358 http://www.amazon.co.jp/exec/obidos/ASIN/0060793260/qid=1127443447/sr=1-8/ref=sr_1_10_8/249-0693061-7820358