こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

APIとMFC

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

という理解で正しいでしょうか。

ここでAPIと書いたのはWin 32 APIのことです。

投稿日時 - 2011-01-26 18:57:05

QNo.6476778

暇なときに回答ください

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

有料=プロが使う物、ではないと思います。
・MFCはC++用のライブラリなので、C言語しかできないのであれば使えない。
・そもそもVisualStudioの有料版を持っていないとMFCが入っていないから使えない。
という事実があるだけかと。
なので、それなりの規模のプログラムを書くつもりであるのなら、MFCを使ったほうが保守性が高まる(はずな)ので、アマチュアでも普通に使えば良いと思います。
ただし、MFCはライブラリ(フレームワーク)自体に癖があるので、それを勉強するのにまた一苦労する必要がありますが。

>将来的にはWTLを利用したいのですが、WikiにはWTLはAPIと書いてありますが
>C++用テンプレートなのでしょうか(初歩的な質問かも知れませんがC++はほとんど分からないので)

C++のテンプレートという機能を用いて書かれたライブラリです。
なのでC++でしか利用できません。

C++が使えるであれば、MFCやWTL以外にも色々ライブラリがあるのですが、使えるのがC言語だけとなるとAPIを直接叩くしか無いかなぁと思います。

参考URL:http://next1.cc.it-hiroshima.ac.jp/CPPPUBLISH/node14.html

投稿日時 - 2011-01-27 00:25:18

お礼

ありがとうございます。
CもC++もまだ勉強を始めたばかりなのですが
Visual C++にはLispのようなガベージコレクション機能があるということでしょうか。
Cでは、malloc,free関数、C++では、new,delete
を使うのでC++でも気をつけないとリソースリークが起きそうですが。

私はCでさえも
int a[10];
a[10]=1;
などとやって不正終了させたような覚えがあります。(Windows 95です)
よく、システムが壊れなかったものですね。

投稿日時 - 2011-01-27 04:34:05

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

アマチュアでも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を使う必要があります。

投稿日時 - 2011-01-26 22:15:39

お礼

私はそこまでC++を理解していないのでAPIを使うしかありません。
ありがとうございました。

将来的にはWTLを利用したいのですが、WikiにはWTLはAPIと書いてありますが
C++用テンプレートなのでしょうか(初歩的な質問かも知れませんがC++はほとんど分からないので)

投稿日時 - 2011-01-26 23:08:43

あなたにオススメの質問