マウスの左クリックを検出する



VC++ の WM_LBUTTONDOWN: でマウスの左クリックを検出して、座標を TextOut() で表示します。

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

プログラムの説明です。

  1. 新規プロジェクト(Mouse)を作成してソースプログラムの最初の部分を表示して下さい。
    マウスの座標を格納する POINT 構造体と編集用の作業領域を定義します。
        // グローバル変数:
        POINT   pt= { 0,0 };
        char    work[80];
        
  2. CALLBACK WndProc() を表示して下さい。
    マウスの左クリックを検出する WM_LBUTTONDOWN: を追加します。
    クリックされた座標を pt に格納して、InvalidateRect() と UpdateWindow() を実行します。
    InvalidateRect() を実行すると WM_PAINT: が呼ばれます。
        switch( message ) 
        {   case WM_LBUTTONDOWN:
                pt.x= LOWORD(lParam);
                pt.y= HIWORD(lParam);
                InvalidateRect(hWnd,NULL,TRUE);
                UpdateWindow(hWnd);
                break;
        
  3. WM_PAINT: でマウスがクリックされた座標を画面に表示します。
    wsprintf() は sprintf() と同じ仕様の関数です。
    この関数は printf() と同種の関数ですが、編集結果を表示する代わりに文字列に格納します。
          case WM_PAINT:
              hdc = BeginPaint (hWnd, &ps);
              // TODO: この位置に描画用のコードを追加してください...
              wsprintf(work,"X=%d  Y=%d", pt.x,pt.y);
              TextOut(hdc,50,20,work,strlen(work));
              EndPaint( hWnd, &ps );
              break;
        
  4. [デバッグ][デバッグなしで開始]を選択して、ビルドに続いて実行を行います。
    マウスを左クリックして座標が表示されることを確認して下さい。
  5. Windows 10 で W32 Mouse マウスがクリックされた座標を表示します。

【演習】

マウスの右クリックと左クリックを別々にカウントして、クリックされた数を表示して下さい。
マウスの左クリックを検出するのが WM_LBUTTONDOWN: なら右クリックは? (^_^;

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