- マウスのスクリーン座標を取得 -



マウスのクリック座標はイベント関数で取得できますが、 通常時のマウスポインタの座標はGetCursorPos関数で取得できます。



□ MSDNよりGetCursorPosの引用 □

 BOOL GetCursorPos(
   // address of structure for cursor position
   LPPOINT lpPoint
 );

  ・取得に失敗した場合、戻り値は0

  ・引数にはPOINT 構造体へのポインタを指定
   作成したPOINT 構造体にマウスポインタのスクリーン座標が格納されます




サンプルではF1キーを押したらマウスポインタの座標を表示するプログラムを作ってみます




≪ MFC SDIでの作成サンプル ≫


 ■ClassWizardよりViewクラスにF1キーが押された時のイベント関数を追加

      

      クラス名 → C***View
      オブジェクトID → C***View
      メッセージ → WM_HELPINFO





 ■作成した関数にソース追加
BOOL CGetCursorPosView::OnHelpInfo(HELPINFO* pHelpInfo)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください

//デバイスコンテキストのポインタ取得
CDC* pDC = GetDC();

//POINT構造体のpoint_dataを作成
POINT point_data;

//CString型変数 X、Yを作成
CString x,y;

//マウスポインタのスクリーン座標取得しPoint_dataに格納
GetCursorPos(&point_data);

//int型からCString型へキャスト
x.Format("%d",point_data.x);
y.Format("%d",point_data.y);

//取得したマウスポインタのスクリーン座標をウインドウに表示
pDC->TextOut(0,0, "        ");
pDC->TextOut(0,20,"        ");
pDC->TextOut(0,0, "X座標:" + x);
pDC->TextOut(0,20,"Y座標:" + y);

//デバイスコンテキストの開放
ReleaseDC(pDC);

return CView::OnHelpInfo(pHelpInfo);
}

作成したPOINT 構造体のpoint_dataにx、y座標が格納され構造体の参照で座標を取得しています。





 ■以上、コンパイルすれば完成

      

      F1キーを押すとマウスポインタのスクリーン座標をPOINT構造体の
      point_data取得しX、Y座標をウインドウ上に表示