W32 Mouse

マウスのクリックを検出して座標を表示します。

前田稔の超初心者のプログラム入門

左クリックを検出

  1. Windows10 & Visual Studio 2019 の環境で、マウスのクリックを検出して座標を表示します。
    Visual Studio で [C++ Windows デスクトップ] のプロジェクトを作成します。
    プロジェクトの作成は W32 Hello を参照して下さい。
  2. WindowsProject1.cpp を修正します。
    グローバル変数に pt と work[80] を追加して下さい。
        // グローバル変数:
        POINT   pt;         // クリックされた座標
        WCHAR   work[80];
    
  3. WM_LBUTTONDOWN: はマウスが左クリックされたときに呼び出されます。
    pt にクリックされた座標を取得して、work に編集して TitleBar に表示します。
        case WM_LBUTTONDOWN:
            pt.x= LOWORD(lParam);
            pt.y= HIWORD(lParam);
            wsprintf(work, L"LBUTTONDOWN X:%d  Y:%d", pt.x, pt.y);
            SetWindowText(hWnd, work);
            break;
    
  4. x64 または x86 を選んで、右三角矢印(または F5 キー)でコンパイルします。
    マウスを左クリックした座標が TitleBar に表示されます。
    メニューから[ファイル][終了する]を選ぶとプログラムが終了します。

左右クリックを検出

  1. WM_LBUTTONDOWN: は左クリックされたときに、WM_RBUTTONDOWN: は右クリックされたときに呼び出されます。
    pt にクリックされた座標を取得して、work に編集して TitleBar に表示します。
    座標を編集する処理を BarPrint() 関数としてコーディングしてみました。
        case WM_LBUTTONDOWN:
            pt.x= LOWORD(lParam);
            pt.y= HIWORD(lParam);
            BarPrint(hWnd, L"LBUTTONDOWN", pt);
            break;
        case WM_RBUTTONDOWN:
            pt.x= LOWORD(lParam);
            pt.y= HIWORD(lParam);
            BarPrint(hWnd, L"RBUTTONDOWN", pt);
            break;
    
  2. BarPrint() 関数は後位参照が起こらないように、// グローバル変数: に続いてコーディングして下さい。
    SetWindowText(hWnd, work); で TitleBar に表示しています。
    // グローバル変数:
    POINT   pt;
    WCHAR   work[80];
    
        void  BarPrint(HWND hWnd, const wchar_t msg[], POINT pt)
        {
            wsprintf(work, L"%s  X:%d  Y:%d", msg, pt.x, pt.y);
            SetWindowText(hWnd, work);
        }
    
  3. x64 または x86 を選んで、右三角矢印(または F5 キー)でコンパイルします。
    マウスを左(右)クリックした座標が TitleBar に表示されます。
    Windows デスクトップ アプリケーションは UWP のように自動的にメニューに登録されることは無いようです。

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

超初心者のプログラム入門(C言語 Windows)