サンプルコードのダウンロード
では、まずサンプルコードをダウンロードし、解凍してください。
私は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に、押されたキーのキーコードが格納されています。
このキーコードについては、資料不足で(爆)どの値がどのキーかは判りません。
ですが、キーが押されたら、そのキーコードを画面に表示する事で、キーのキーコードが判るというわけです。