キーボードイベントを扱う †キーボードイベントを受けるマクロにWM_KEYDOWNとWM_CHARがある。 制約 †.NET関数・MFCを使用しないこと。 コメント †ウィンドウがアクティブな状態で何かキーを押すと、メッセージボックスからキーコードと文字を確認できます。 LRESULT CALLBACK WndProc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp ) // // { // // switch( msg ) // メッセージを判定 // { // // case WM_COMMAND: // コマンドを拾う場合 // switch( LOWORD( wp ) ) // コマンドの種別によって分岐処理 // { // // case WM_KEYDOWN: // WM_KEYDOWNを拾う場合の動作 // { // // if(19 == wp) // pauseキー(コード19)かを判定(例外キーテスト) // { // pauseキーが押された場合 // PostQuitMessage( END_MSG ); // 全終了 // } // // // // tstring numMsg( _T("押されたキーのコードは 【") ); // メッセージ表示用 // TCHAR *codeNum; // 整数を文字列に変換するため // // // codeNum = new TCHAR[4]; // メモリ割当て // memset( codeNum, '\0', sizeof(codeNum) ); // 割当てられた領域の初期化 // // // _itot( (int)wp, codeNum, 10 ); // 10進整数を文字列に変換する // // // numMsg.append( (TCHAR*)codeNum ); // メッセージ編集 文字コード(仮想コード) // numMsg.append( _T("】 です。\n") ); // メッセージ編集 // // // numMsg.append( _T("文字は 【") ); // メッセージ編集 // numMsg.append( (PTSTR)&wp ); // メッセージ編集 キーの判定 // numMsg.append( _T("】 です。") ); // メッセージ編集 // // // delete [] codeNum; // 割当てられた領域の解放 // // // MessageBox( NULL, numMsg.c_str(), _T("StyleMod"), MB_OK ); // 画面表示 // // // return PROCESS_OK; // 処理終了 // } // // // // case WM_CHAR: // WM_CHARを拾う場合の動作 // { // // tstring numMsg( _T("押されたキーのコードは 【") ); // メッセージ表示用 // TCHAR *codeNum; // 整数を文字列に変換するため // // // codeNum = new TCHAR[4]; // メモリ割当て // memset( codeNum, '\0', sizeof(codeNum) ); // 割当てられた領域の初期化 // // // _itot( // 10進整数を文字列に変換する // (int)wp, // // codeNum, // // 10 ); // // // // numMsg.append( (TCHAR*)codeNum ); // メッセージ編集 文字コード(WM_CHAR) // numMsg.append( _T("】 です。\n") ); // メッセージ編集 // // // numMsg.append( _T("文字は 【") ); // メッセージ編集 // numMsg.append( (PTSTR)&wp ); // メッセージ編集 文字の判定 // numMsg.append( _T("】 です。") ); // メッセージ編集 // // // delete [] codeNum; // 割当てられた領域の解放 // // // MessageBox( NULL, numMsg.c_str(), _T("StyleMod"), MB_OK ); // 画面表示 // // // return PROCESS_OK; // 処理終了 // } // // // // case WM_DESTROY: // ウィンドウ破棄のとき // PostQuitMessage( END_MSG ); // 終了メッセージを送る // return PROCESS_OK; // 正常終了 // } // // // // return DefWindowProc( hWnd, msg, wp, lp ); // 他のメッセージは、デフォルトの処理を行う // // // } 参考ページ †http://wisdom.sakura.ne.jp/system/winapi/win32/win30.html |