初めて自分の家と他人の家が違う、と意識した時

はじめまして、コンピューターを勉強し始めた学生です。最近OSについての基本的な勉強を始めたのですが、ちょっとAPIのところで分らなくなりました。MicrosoftのWIN32とMFCは全くの別物なんですか?どちらもWindowsのSoftware開発に関わりが在りそうだとは思っているのですが...

何かとんでもない間違った質問をしている様な気もするのですが、誰か知っている人教えてください。

A 回答 (2件)

Win32はWindows9x、MeやNT、2000、Xpに実装されているAPIです。

それ以前はWin16やWin32sといったものを使っていました。
APIはアプリケーションレベルから使用する事のできる、一番下の層で(ホントは違います。ホントはDeviceIOControl()でVxDの機能を使ったり出来ます。Win9xやMeではKernel書き換えて好き勝手出来るし)、この層までを用いてアプリケーションを作成すればWin32レベルでも互換性を確保する事が出来ます。
(建前(笑) ホントに互換性を維持するためにはこの中でも非互換APIを使わないようにし、挙動の違うAPIも使わない用にするか挙動をあわせるコードを書く必要があります。システム周りのAPIではNT系と9x系では互換性がほとんどありませんし(i.e. Toolhelp32系APIとPSAPI系APIとか・・・2000では両者とも使えるようになりましたが)、GDI系APIも微妙に違います。後はUnicode系のサポートも。)

それに対してMFCはWin32API(昔はWin16サポートしてた頃も)をラッピングしたクラスライブラリで(あれを「クラス」ライブラリというのはちょっと心苦しい・・・)ソフトウェア開発において工数を減らし、プログラムを見通し良いものにするものです。
一昔前はBorlandのOWLというものもありましたし、最近だとC++ Builderの(DELPHIからの移植?)VCLといったものもあります。

以上がWindowsに限った話です。まぁ、平たく言えばAPIというのはOSが用意するシステムサービスへのアクセス手段で、実行速度は速いが機能は一般的に貧弱。クラスライブラリはAPIを素のまま使うとさすがにきついので労力軽減のために使用するライブラリの一種、とでも考えてください(あくまで一例です。例外はいっぱいあります。たとえばBeOSのAPIなどはAPI自体がクラスライブラリとなっています。また、クラスライブラリも工数軽減だけでなく、porting(移植作業)を手助けするものもあります)。
    • good
    • 1
この回答へのお礼

詳細な説明をどうも有り難う御座いました。とても参考になります。

お礼日時:2002/01/13 00:20

Win32APIというのは、


開発者向けに公開されているWindoewsの内部関数群です。
なのでプログラマがこれを使用してCやC++、VB上で、
Windowsアプリケーションの開発を行う事ができます。

MFCというのは、
MicrosoftがVCでの開発の為Win32APIを使いやすく(?)加工してくれたクラス群です。

ですが、
処理が重いといった原因で敬遠されがちで、
Win32APIを直接コールする方が一般的ですね。
    • good
    • 0
この回答へのお礼

とても分かり易く説明して頂きどうも有り難う御座いました。

お礼日時:2002/01/12 20:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報