| 0からのゲームプログラミング > Windows API |
| Back Next |
| 更新日 2003.09.28 |
| Windows API |
| Windows API (Application Programming Interface)とは、OS(Windows) がアプリケーション(メモ帳やこれから作成するゲーム等)に提供する関数セットのことです。昔の16ビット環境用や現在主に使われている32ビット環境用があります。32ビット環境用のAPIのことを、Win32 API と呼びます。Windows でプログラムを作成していくときには、この Win32 API
を使っていきます。 Win32 API は、Windows Application (ウィンドウズ・アプリケーション) を作成するときに使われるだけでなく、今まで作ってきた Console Application (コンソール・アプリケーション) でも使うことが出来ます。今回は、試しにコンソール・アプリケーションで、Win32 API を使ってみましょう。 以下のコードは、ビープ音を鳴らすサンプルです。実行すると、ビープ音が鳴りますので、ビックリしないようにして下さい。 サンプルコード |
|
Beep という関数は、スピーカからビープ音を鳴らします。この Beep 関数は、数ある Windows API の中の一つです。 Beep 関数のプロトタイプ |
|
第1引数 : 音の周波数。37(0x25)から 32,767(0x7FFF)までの値をヘルツ(Hz)単位で指定。 第2引数 : 音の持続時間をミリ秒(ms)単位で指定。 戻り値 : 関数が成功したら、 0 以外が返る。 |
0x は16進数の意味です。x を大文字にして、0X と書かれることもあります。上記のように、Beep 関数で指定出来る周波数の範囲がありますが、人間が聴き取れる範囲には個人差があります。30000 とか指定すると、少なくとも私には聴こえませんでした。(^^;.... 持続時間はミリ秒単位で指定します。1000 と指定すると、1 秒と同じことですね。 BOOL, DWORD は、typedef 演算子 によって、既存のデータ型に別名が付けられたデータ型です。ヘッダファイルに、以下のような感じで定義されています。 typedef 演算子が使われた例 |
|
Beep 関数を使用する為には、ヘッダファイル windows.h のインクルードが必要です。 Beep 関数の前に、スコープ解決演算子( :: ) を書いていますが、別に書かなくても構いません。スコープ解決演算子( :: ) から後は、グローバルで定義(宣言)されている、関数や変数等を書くことが出来ます。Visual C++ を使っているなら、2つ目のコロン( : ) を書いた時点で、以下のように『これでもか!』、というくらいたくさんの Windows API や C言語の関数等が表示されます。 |
![]() |
それでは、もう少し遊んでみましょう。 サンプルコード |
|
上記の例では、ビープ音が3回連続で鳴ります。ビープ音とビープ音の間を空けたい場合には、例えば以下のようにします。 サンプルコード |
|
Sleep 関数は、指定した時間だけ眠らせます。名前の通りです。 Sleep 関数のプロトタイプ |
|
引数 : 中断する時間 をミリ秒(ms)単位で指定。 戻り値 : なし。 VOID も以下のように別名が付けられたデータ型です。 |
|
Beep と Sleep 関数を組み合わせれば、音楽も作れちゃいますね。私には、音感がないので作れませんが、分かる人には簡単に作れると思います。まぁ、普通こんなので音楽は作りませんが。もし、これで音楽を作った人がいましたら、教えて下さい。(笑) さて、API の引数に指定する情報等がどこに書かれているのかというと、Visual C++ を使っているなら、付属の MSDN ライブラリ と呼ばれるヘルプに詳細に書かれています。例えば、Beep にカーソルを合わせて、「F1」キーを押すとBeep 関数が書かれたページにリンクされます。そこで、API を直接使う為の情報が書かれた、プラットフォーム SDK を見て下さい。 MSDN ライブラリを持っていない場合は、ネットで検索すれば、その関数の情報がほぼ見つかります。Beep や Sleep のような短い名前の関数なら、求めていない情報も検索されてしまいますが、もっと長い関数名の API なら、知りたい情報に直ぐにたどり着くことが出来ます。Beep 関数でも、「Beep API」と組み合わせて検索すれば、比較的見つけ易い筈です。 自分が作った以外の関数を使う場合には、普通、プロトタイプ等が書かれたヘッダファイルのインクルードと、その本体(実体)がどこにあるかという情報が書かれたライブラリファイル(*.lib)のリンクが必要です。良く使うライブラリファイルは、既定の設定でリンクされていますので、上記の例ではその設定が不要でした。ある API が、どのヘッダファイルとライブラリファイルが必要かという情報は、MSDN ライブラリ に書かれています。 前置きが長かった気がしないでもないですが、次回からお待ちかねのゲーム作成へ移行します。 |
| 【スポンサード リンク】 |
| Back Next |
| 0からのゲームプログラミング > Windows API |