|
今回はキー入力を取得してみます /* 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);
}
デバックコンソールを表示しておいてください 全ソースコードは下から
|