Win32 APIとは


Windowsプログラミング

ここでは、Microsoft 社の Windows オペレーティングシステムのプログラミングを解説します
Windowsプログラミングを行うためには、Windowsが提供している API を操作します
API とは Application Programming Interfaces のことで
アプリケーションからOSを操作するための手段です(これは、開発者が提供しています)

ネイティブな Windows API を操作することは、Windowsプログラミング及び
Windows というOSの仕組みを理解するうえで非常に重要です
しかし、それと同時に困難で理解に苦しむ部分も多く、それなりのプログラム経験が問われます

Windows APIを学ぶには、多くの基本知識を必要とします
この講座を閲覧するには、最低でもC言語の知識は必要になります
また、Windows オペレーティングシステム(9x系、NT系のいずれか)を熟知しているものとします
第3に文字コードやコンピュータアーキテクチャにも詳しくなければいけません
UnicodeやCISC、RISC という言葉を聞いて理解できなければ
まずは情報技術に関する基礎知識を身につけてほしいと思います


Windowsプログラミングの方法

この講座では、Microsoft Visual C++ 6.0 などの開発環境を用い
C言語から API を呼び出す一般的なWindowsプログラミング方法を使用します

何度も言いますが、このためにはC言語などの基礎知識が必要になります
しかし、Windowsプログラミングの手段はこれだけではありません
Microsoft Visual BasicBoland Delphi などの手段もあります
Sun Microsystems 社の Java という手段もあります
Microsoft Visual C++ であれば、MFCというクラス郡もサポートされている

上記した方法は、ネイティブAPIを直接操作するよりははるかに簡易に習得できる
開発効率や管理を重視したいのならば、むしろこの方が優れた方法でしょう
ただし、これらの方法でも API の知識があれば、より高度なプログラムをつくれるでしょう
なにより、API を直接操作するという方法は、もっともOSの機能を引き出すことができるのです


Windowsの歴史

残念なことに、Windowsの歴史をこと細かく書けばそれだけで一冊の本にできます
ゲイツ氏やアップルのジョブズ氏、彼らとパロアルト研究所の「アルト」との出会い
現代コンピュータの歴史は、まさにドラマと言える裏舞台がありました
それをここに記すことは、文章力(そして知識が…)の無い筆者には無理な話です
ここでは、Windowsプログラミングを行うために必要な簡単な歴史を追うことにしましょう

年代メーカープラットフォーム解説
1983Apple Computer LisaMacの前身
1983Microsoft Windows発表 リリースはこの2年後
1984Apple Computer MacintoshGUI標準の確立
1985Microsoft Windows Version 1.0Windowsの初版
1987MicrosoftWindows Version 2.0Windows/386
Windows/286(Ver2.1)など
マルチタスク、各インターフェイスの拡張
1987IBM/MicrosoftOS/2 Version 1.0共同開発されたOS
GUIのサポートはない
1988IBM/MicrosoftOS/2 Version 1.1PMと呼ばれるGUIをサポート
1990MicrosoftWindows Version 3.0この後、IBMはOS/2を
MicrosoftはWindowsで展開
OS/2は一部の利用者を確保しつつも
Windowsのシェアに追いついたことはない
1992MicrosoftWindows Version 3.1マルチメディアのサポート
日本でもここからWindowsが注目される
日本語版は翌年リリース
1993MicrosoftWIndows NTServerとWorkstationに分かれている
Intel Pentiumプロセッサなどの32ビットをサポート
1995MicrosoftWindows 95個人向けで最初の32ビットサポート
日本でも多くのユーザーを確保する
1998MicrosoftWindows 98処理性能やインターネット機能
ハードウェアサポートなどを拡張
2000MicrosoftWindows 2000NTの後継機になる
Professional、Server
Advaced Server、Datacenter Serverなど
機能で各種バージョンが分けられている
2000MicrosoftWindows MeMeは、Millennium Edition の略
Windows 98の後継機

Macintoshなどの開発工程は略しましたが、こんな感じです
興味があれば、MacintoshやOS/2などの開発歴も調べてみると良いでしょう

さて、問題は私たちがこれからやろうとしているWindowsプログラミング
一体どのWindowsプログラミングなのでしょうか…
安心して下さい。実は NT 系も 9x 系も基本的には互換性があるのです
しかし、それぞれアーキテクチャは異なります
初期バージョンはノンプリエンプティブの16ビットコンピュータでしたが
とくに、16ビットから32ビットアーキテクチャへの移行時には
API にも大きな変更が加えられ、いくつかの過去の API は使うことを推奨されません

このため、16ビットアーキテクチャのWindows API(Windows 3.1まで)は Win16 と呼び
これから私たちがやろうしている、32ビットWindowsのAPIを Win32 と呼びます

Win32の位置付けは、Win16の拡張版という感じです
それらは互換性を保ちつつ、Win16では実現できない命令(ファンクションコール)が追加され
また、Windows9x と Windows NT は、双方 Win32 API をサポートしていますが
それぞれ、固有の機能の実装があるので完全な互換ではありません


ダイナミックリンク

Windowsプログラミングの基本概念は動的リンキングです
Windowsは、ディスプレイなどに表示するグラフィックス関数をサポートしています
アプリケーションは、Windowsの関数を呼び出し(ファンクションコール)その機能を利用します

Windowsがサポートする関数は数千とあり、この講座で全てを紹介することはできません
これらのファンクションは、ダイナミックリンクライブラリ(DLL)が用意しています
拡張子は一般に *.dll しばしば *.exe の時もあります

WindowsのファンクションはC言語などの標準ライブラリとは異なり
プログラムの外部に存在し、プログラムから関数のエントリポイントにアクセスします
DLLの名前や位置はインポートライブラリが提供しています
プログラマは、Windowsプログラムを生成する時、まずこれにリンクしなければなりません
//インポートライブラリは、開発環境がサポートしています

これ以上詳しいことは、実際にプログラムしてみないと理解できないでしょう
さぁ、困難が待ちうけていると思いますが、ぜひ立ち向かってください
簡易環境に頼ることなく、サードパーティ製のライブラリに頼ることなく
あなたが、自ら作った最高のライブラリで Windows を動かすことができるようになります



戻る次のページへ