アットウィキロゴ
 
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