Windows API について

Windows API

Windows API (Windows Application Programming Interface) は,C やその他の言語から利用できる Windows の機能のセット (別の言い方をすれば,関数のセット) です。
Windows API を利用することで,Windows に用意されている様々な機能を呼び出すことができます。

C の標準ライブラリには,コンソールアプリケーションを作成できる程度の関数しか用意されていませんが,Windows API には,次の MessageBox 関数のように GUI を実現するための関数が用意されています。

C の標準関数でテキストを表示
printf("Hello, world!\n");

C の標準関数でテキストを表示
Windows API 関数でテキストを表示
MessageBox(NULL,
    "Hello, world!", "Test", NULL);
Windows API 関数でテキストを表示

また,ファイルを開く C の標準関数 fopen はパラメータ数が 2 個なのに対し,Windows API 関数 CreateFile は 7 個ものパラメータを持ちます。
このように,Windows API を直接利用することで,Windows の機能をフルに活用したプログラムが作れるようになります。


fp = fopen("hoge.txt", "r");

C の標準関数でファイルを開く
hFile = CreateFile("hoge.txt",
    GENERIC_READ, 0, NULL, OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL, NULL);
Windows API 関数でファイルを開く

ファイルを開くだけで 7 個もパラメータが必要なのは驚きですが,Windoows API にはこの程度のパラメータ数の関数はたくさんあります。
本書の序盤でウィンドウの作成方法を紹介しますが,そこでは 11 個ものパラメータを持つ関数が登場します。

Windows API の種類

Windows API には,次のようなバージョンが存在します。

また,Win16 を Win32 環境で,Win32 を Win64 環境でエミュレートする,WOW, WOW64 と呼ばれる技術があります。

他の選択肢

Windows API は Windows のネイティブの機能を直接呼び出せるため,痒いところに手の届くアプリケーションを開発できますが,API がたいへん複雑なため簡単なアプリケーションの開発でもたいへんな苦労を伴います。 ここでは,これから Windows アプリケーションを作ろうとしている読者の方が途方に暮れないように,取り掛かりやすい他の方法で Windows アプリケーションを作る方法を紹介しておきます。

Windows アプリケーションを作成するため方法には,Windows API の他にも,Windows フォーム,WPF,MFC,Visual Basic,Delphi といった選択肢があります。
学習コストや開発するアプリケーションの性質に照らして,適切な方法を検討することが重要です。

初学者向けの筆者のお勧めは,Windows フォームや WPF による Windows アプリケーションの開発です。
C# や VB.NET を知らない方は新しく言語を習得する必要がありますが,C# に関しては Java や C++ に触ったことがあれば習得は容易いはずです。
単にウィンドウを出すだけのプログラムであれば,次のように非常に簡単に書けてしまいます (Windows フォームの例)。

using System.Windows.Forms;

class MainForm : Form
{
    static void Main()
    {
        Application.Run(new MainForm());
    }
}