- ベストアンサー
APIとMFC
WindowsでC言語で書けて(利用できて)無料のものがAPI、C++で使えて有料なものがMFC だから、アマチュアプログラマーは、APIが使いこなせるのならば、APIを使ってプログラムを 書いたほうがいい という理解で正しいでしょうか。 ここでAPIと書いたのはWin 32 APIのことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
有料=プロが使う物、ではないと思います。 ・MFCはC++用のライブラリなので、C言語しかできないのであれば使えない。 ・そもそもVisualStudioの有料版を持っていないとMFCが入っていないから使えない。 という事実があるだけかと。 なので、それなりの規模のプログラムを書くつもりであるのなら、MFCを使ったほうが保守性が高まる(はずな)ので、アマチュアでも普通に使えば良いと思います。 ただし、MFCはライブラリ(フレームワーク)自体に癖があるので、それを勉強するのにまた一苦労する必要がありますが。 >将来的にはWTLを利用したいのですが、WikiにはWTLはAPIと書いてありますが >C++用テンプレートなのでしょうか(初歩的な質問かも知れませんがC++はほとんど分からないので) C++のテンプレートという機能を用いて書かれたライブラリです。 なのでC++でしか利用できません。 C++が使えるであれば、MFCやWTL以外にも色々ライブラリがあるのですが、使えるのがC言語だけとなるとAPIを直接叩くしか無いかなぁと思います。
その他の回答 (1)
- sygh
- ベストアンサー率76% (42/55)
アマチュアでもC++に対する一定水準の理解があれば、MFCを積極的に使って開発してもOKだと思います。むしろWindows APIをC/C++から直接利用する場合、リソースの寿命管理(=ハンドルの管理)をすべて自前で行なわないといけなくなるので、リソースリークしないようにプログラムを書くのが大変です。メッセージハンドラの記述もswitch-caseの嵐になってしまい、メンテナンス性や拡張性が悪くなります。 ちょっとしたツールを作るときや、新しく知ったWindows APIやサードパーティのライブラリを試しにテストしたいときなども、MFCのアプリケーション ウィザードは重宝します。 MFC以外のWindows GUIアプリケーション開発用C++ライブラリとしては、ATLやWTLがあります。 最近のMFCほど豪華ではありませんが、ATLの一部はWindows SDKに付属しているし、WTLは無償で利用できる上、軽量なアプリを作るのに向いているので、C++テンプレート プログラミングをある程度理解しているのであれば、MFCの代わりにこちらを選択する手もあります。 なお、アマチュアでなくても、MFCフレームワークを使うのが適当でないゲーム アプリケーションなどでは、Windows APIやその他のAPIを直接利用したり自前でラップしたりして開発することもあります。 マルチプラットフォーム展開する場合は移植を容易にするために各種プラットフォーム固有のAPIを隠蔽する吸収層を用意すると思いますが、そういった層の内部ではMFCなどを使わず、必ずAPIを使う必要があります。
お礼
私はそこまでC++を理解していないのでAPIを使うしかありません。 ありがとうございました。 将来的にはWTLを利用したいのですが、WikiにはWTLはAPIと書いてありますが C++用テンプレートなのでしょうか(初歩的な質問かも知れませんがC++はほとんど分からないので)
お礼
ありがとうございます。 CもC++もまだ勉強を始めたばかりなのですが Visual C++にはLispのようなガベージコレクション機能があるということでしょうか。 Cでは、malloc,free関数、C++では、new,delete を使うのでC++でも気をつけないとリソースリークが起きそうですが。 私はCでさえも int a[10]; a[10]=1; などとやって不正終了させたような覚えがあります。(Windows 95です) よく、システムが壊れなかったものですね。