今回はキー入力を取得してみます /* void Cls_OnChar(HWND hwnd, TCHAR ch, int cRepeat) */ #define HANDLE_WM_CHAR(hwnd, wParam, lParam, fn) \ ((fn)((hwnd), (TCHAR)(wParam), (int)(short)LOWORD(lParam)), 0L) 注目して欲しいのはwParamとlParamの扱いです #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff)) で定義されているマクロで下位バイトを示します ちなみにここでは使いませんが #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16)) ではキー入力メッセージ処理部分を書いてみましょう //-------------------------------------------------------// // キー文字メッセージ処理 // // 引数: hWnd ウィンドウハンドル // ch 入力された文字 // cRepeat リピートカウント(長押し時、キー処理を行う回数) //-------------------------------------------------------// void OnChar(HWND hWnd, TCHAR ch, int cRepeat){ _tprintf(_T("%c"),ch); } //------------------------------------------------------// // ウィンドウ破棄メッセージ処理 // // 引数: hWnd ウィンドウハンドル //------------------------------------------------------// void OnDestroy(HWND hWnd){ PostQuitMessage(0); } //-----------------------------------------------------// // ウィンドウプロシージャ // デフォルトの処理はDefWindowProc関数で行う // // 引数: hWnd ウィンドウハンドル // msg メッセージ // wParam パラメータ // lParam パラメータ // // 戻り値:処理結果 //-----------------------------------------------------// LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ switch(msg){ // キーボード HANDLE_MSG(hWnd,WM_CHAR,OnChar); HANDLE_MSG(hWnd,WM_DESTROY,OnDestroy); } return DefWindowProc(hWnd, msg, wParam, lParam); } デバックコンソールを表示しておいてください 全ソースコードは下から
|