サンプルコードのダウンロード
では、まずサンプルコードをダウンロードし、解凍してください。
私はVisual C++6.0でコンパイルしているので、お持ちの方はVisual C++でプロジェクトファイルを開いてください(「game_01.dsw」をダブルクリックすれば開けます)。
圧縮ファイルに含まれる「game_01.exe」をダブルクリックし、実行してみてください。
どうでしょう?画面が切り替わり、フルスクリーン化すると思います。
そして、何かキーを押すと、そのキーコードが画面に表示されると思います。
というわけで今回は、キー入力について解説したいと思います。
ウィンドウメッセージ
前にDirectDraw講座でも触れましたが、Windows上ではアプリケーションとWindows(OS)がコミュニケーションをとるために、ウィンドウメッセージというのをやりくりします。
例えばキーが押されたらWindowsがアプリケーションに対して「キーが押されたぞ」というメッセージを送信します。
そしたらアプリ側はメッセージループ中、そのメッセージを受信し、ウィンドウプロシージャと呼ばれる関数を呼び出します(ウィンドウプロシージャは自分で制作する事になります)。
ではサンプルコードを見ていきます。
//----------[ ウィンドウプロシージャ ]----------------------------------------------------------
HRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){
switch(iMessage){
略
//キー押された
case WM_KEYDOWN:
//pauseキー(キーコード19)が押されたら終了
if(wParam==19)
Quit();
ClearScreen(lpBack);
DdTextOut(lpBack,0,0,"Pause(STOP)キーで終了",1);
sprintf(tmp,"key=%d",wParam);
DdTextOut(lpBack,0,16,tmp,1);
Flip();
return(TRUE);
メッセージの種類は「UINT iMessage」に格納されています。
ですから、switch文で分岐してやります。
キーが押された時の値は「WM_KEYDOWN」(マクロ)です。
そして、wParamに、押されたキーのキーコードが格納されています。
このキーコードについては、資料不足で(爆)どの値がどのキーかは判りません。
ですが、キーが押されたら、そのキーコードを画面に表示する事で、キーのキーコードが判るというわけです。







