今回はキー入力を取得してみます
OnChar関数を作成し、メッセージクラッカーに渡します
戻り値、引数は次の通りです

 /* 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の扱いです
wParamはTCHAR型に、lParamの下位バイトはint型にキャストされています
LOWORDは
 #define LOWORD(l)           ((WORD)((DWORD_PTR)(l) & 0xffff))
で定義されているマクロで下位バイトを示します
このように、wParamとlParamの取扱いはメッセージごとに違います
WM_DESTROYでは使用しませんでした
メッセージクラッカーの定義に従えば、パラメータの適切な使い方がわかります

ちなみにここでは使いませんが
上位バイトを示すにはHIWORDというマクロを使います
 #define HIWORD(l)           ((WORD)((DWORD_PTR)(l) >> 16)) 

------------------------------------------------------
ではキー入力メッセージ処理部分を書いてみましょう
どのキーが押されたかというメッセージは
WM_CHARメッセージが送られてきます

        //-------------------------------------------------------//
	//	キー文字メッセージ処理
	//
	//	引数:	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);
	}

デバックコンソールを表示しておいてください
_tprintf関数は通常のprintf関数とUnicode文字出力用のwprintf関数を切り替えるマクロです
TCHAR型は文字コード定義によってchar型とwchar_t型が切り替わる文字です
文字に関しては全てTCHAR型で取り扱えば、文字コードの問題は回避できます

ウィンドウにフォーカス状態でキーを打てば入力できます
&ref(key.GIF);

全ソースコードは下から
&ref(main.cpp);

#vote((^ω^)やったお[0],何これwww意味不すぎwww[0],。(`ω´#)。あぁん?最近、だらしねぇな[0])
|(^ω^)やったお|0|
|何これwww意味不すぎwww|0|
|。(`ω´#)。あぁん?最近、だらしねぇな|0|



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS