MFCその5 マウスを使う
と同様にメッセージから下記の関数を作る.
名前 ・・・ メッセージ送信タイミング:『nCharの中身』
WM_KEYDOWN ・・・ キーボードを打った瞬間:『位置』
WM_KEYUP ・・・ キーボードを離した瞬間:『位置』
WM_CHAR ・・・ キーボードを打っている間:『文字』
キーボードを打って離したときの順番は
WM_KEYDOWN → WM_CHAR → WM_KEYUP
『nCharの中身』は例えば「a」と打ったときに
a/A/あ/アなどを全て含むのが『位置』
aだけのことを指す(Shiftが押された「A」や仮名の「あ」は除外する)
下記のプログラムを動かして,画像の再描画がどういうタイミングでされたかを見ることで,処理の仕方を知れる.
void CChildView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。
if(nChar == 'D'){
InvalidateRect(NULL, TRUE);
UpdateWindow();
}
CWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CChildView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。
if(nChar == 'S'){
InvalidateRect(NULL, TRUE);
UpdateWindow();
}
CWnd::OnKeyUp(nChar, nRepCnt, nFlags);
}
void CChildView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。
if(nChar == 'A'){
InvalidateRect(NULL, TRUE);
UpdateWindow();
}
CWnd::OnChar(nChar, nRepCnt, nFlags);
}
最終更新:2007年11月23日 21:24