ポストされてきたキーコードを表示する



VC++ の WM_KEYDOWN: でポストされてきたキーコードを16進数で編集して表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明です。

  1. 新規プロジェクト(KeyType)を作成してソースプログラムの最初の部分を表示して下さい。
    ポストされたキーコードを保存する領域と編集用の作業領域を定義します。
        // グローバル変数:
        int     KeyCode= 0;
        char    work[80];
        
  2. InitInstance() を表示して下さい。
    大きな画面は必要ないので、ウインドウのサイズを小さくします。
        BOOL InitInstance( HINSTANCE hInstance, int nCmdShow )
        {
                :
            hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
                   CW_USEDEFAULT, CW_USEDEFAULT, 200, 150, NULL, NULL, hInstance, NULL);
        
  3. CALLBACK WndProc() を表示して下さい。
    キーが押されると WM_KEYDOWN: がポストされてきます。
    キーを KeyCode に保存して InvalidateRect() と UpdateWindow() を実行します。
        switch( message ) 
        {
            case WM_KEYDOWN:
                KeyCode= wParam;
                InvalidateRect(hWnd,NULL,TRUE);
                UpdateWindow(hWnd);
                break;
        
  4. 保存されている KeyCode を16進数に編集して画面に表示します。
            case WM_PAINT:
                hdc = BeginPaint (hWnd, &ps);
                // TODO: この位置に描画用のコードを追加してください...
                wsprintf(work,"%x", KeyCode);
                TextOut(hdc,50,20,work,strlen(work));
                EndPaint( hWnd, &ps );
                break;
        
  5. [デバッグ][デバッグなしで開始]を選択して、ビルドに続いて実行を行います。
    キーをタイプすると、そのコードが16進数で画面に表示されます。

【演習】

次のキーを押したときに表示されるキーコードを確認して下さい。
  1. 数字キー(0,5,9)
  2. 英字キー(A,Z,a,z)
  3. 記号キー(<,=,),*)
  4. 矢印キー(→,←,↑,↓)
  5. テンキー(0,9)


タイプされたキーにより処理を分けるときは次のようにします。
代表的なキー定義の名前は F12 & ESC キーでプログラムを終了する を参照して下さい。
    case WM_KEYDOWN:
        switch(wParam)
        {   case VK_ESCAPE:     //[ESC]キーで終了する
                DestroyWindow(hWnd);
                break;
            case VK_SPACE:
                //スペースキーが押された
                break;
            case VK_RETURN:
                //エンターキーが押された
                break;
        }
        break;

超初心者のプログラム入門(Win32API C++)