サンプルコードのダウンロード

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

記事検索

アーカイブ