Win32API講座6回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
今回はキー入力を取得してみます
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(lPa...
注目して欲しいのはwParamとlParamの扱いです
wParamはTCHAR型に、lParamの下位バイトはint型にキャストさ...
LOWORDは
#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xf...
で定義されているマクロで下位バイトを示します
このように、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 wPa...
switch(msg){
// キーボード
HANDLE_MSG(hWnd,WM_CHAR,OnChar);
HANDLE_MSG(hWnd,WM_DESTROY,OnDestroy);
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
デバックコンソールを表示しておいてください
_tprintf関数は通常のprintf関数とUnicode文字出力用のwprint...
TCHAR型は文字コード定義によってchar型とwchar_t型が切り替...
文字に関しては全てTCHAR型で取り扱えば、文字コードの問題は...
ウィンドウにフォーカス状態でキーを打てば入力できます
&ref(key.GIF);
全ソースコードは下から
&ref(main.cpp);
|(^ω^)やったお|0|
|何これwww意味不すぎwww|0|
|。(`ω´#)。あぁん?最近、だらしねぇな|0|
終了行:
今回はキー入力を取得してみます
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(lPa...
注目して欲しいのはwParamとlParamの扱いです
wParamはTCHAR型に、lParamの下位バイトはint型にキャストさ...
LOWORDは
#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xf...
で定義されているマクロで下位バイトを示します
このように、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 wPa...
switch(msg){
// キーボード
HANDLE_MSG(hWnd,WM_CHAR,OnChar);
HANDLE_MSG(hWnd,WM_DESTROY,OnDestroy);
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
デバックコンソールを表示しておいてください
_tprintf関数は通常のprintf関数とUnicode文字出力用のwprint...
TCHAR型は文字コード定義によってchar型とwchar_t型が切り替...
文字に関しては全てTCHAR型で取り扱えば、文字コードの問題は...
ウィンドウにフォーカス状態でキーを打てば入力できます
&ref(key.GIF);
全ソースコードは下から
&ref(main.cpp);
|(^ω^)やったお|0|
|何これwww意味不すぎwww|0|
|。(`ω´#)。あぁん?最近、だらしねぇな|0|
ページ名: