マウスの座標を表示する



WM_MOUSEMOVE: でマウスの移動を検出して、座標を TextOut() で表示します。

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

プログラムの説明です。

  1. 新規プロジェクト(MouseMove)を作成してソースプログラムの最初の部分を表示して下さい。
    マウスの座標を格納する構造体と編集用の作業領域を定義します。
    pt が右クリックした座標で、pt2 がマウスが移動した座標です。
        // グローバル変数:
        POINT   pt=  { 0,0 };
        POINT   pt2= { 0,0 };
        char    work[80];
        
  2. CALLBACK WndProc() を表示して下さい。
    マウスの右クリックを検出する WM_RBUTTONDOWN: を追加します。
    右クリックされた座標を pt に格納して、InvalidateRect() と UpdateWindow() を実行します。
        {   case WM_RBUTTONDOWN:
                pt.x= LOWORD(lParam);
                pt.y= HIWORD(lParam);
                InvalidateRect(hWnd,NULL,TRUE);
                UpdateWindow(hWnd);
                break;
        
  3. マウスの移動を検出する WM_MOUSEMOVE: を追加します。
    移動した座標を pt2 に格納して、InvalidateRect() と UpdateWindow() を実行します。
            case WM_MOUSEMOVE:
                pt2.x= LOWORD(lParam);
                pt2.y= HIWORD(lParam);
                InvalidateRect(hWnd,NULL,TRUE);
                UpdateWindow(hWnd);
                break;
        
  4. WM_PAINT: でマウスが右クリックされた座標と移動した座標を画面に表示します。
        case WM_PAINT:
            hdc = BeginPaint (hWnd, &ps);
            // TODO: この位置に描画用のコードを追加してください...
            wsprintf(work,"RClick X=%d  Y=%d", pt.x,pt.y);
            TextOut(hdc,50,20,work,strlen(work));
            wsprintf(work,"Move X=%d  Y=%d", pt2.x,pt2.y);
            TextOut(hdc,50,40,work,strlen(work));
            EndPaint( hWnd, &ps );
            break;
        
  5. [デバッグ][デバッグなしで開始]を選択して、ビルドに続いて実行を行います。
    マウスの移動と右クリックで座標が表示されることを確認して下さい。
    マウスがウインドウの外に出ると移動が検出されないことを確かめて下さい。

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