|
|
||||
Tips > |
|||||
画面上のマウス座標を GetCursorPos で知る |
更新 : 2010/02/19 |
||||
|
|
||
解説: アプリケーション内で座標を知りたい時、C++Builder のイベントなどから簡単に取得できます。 ではフォーム外の座標はどうでしょう? ScreenToClient? ClientToSc...? などとちょっと面倒なことを考えてしまいます。 こんなとき Win32API には GetCursorPos という便利な関数が用意されています。 BOOL GetCursorPos(LPPOINT lpPoint); 引数は、POINT 構造体のポインタ型です。 戻り値は、関数が成功したか失敗したか返ってきます。 使用例: 以下の例では、マウスの移動に伴って、画面上の座標値を Label1 の Caption に表示させています。 コンポーネントは、Label, Timer を適当に配置するだけです。 速く反応をさせたい場合は、Timer1 の Interval を 100ms に設定するなどしてください。 アプリケーションを起動すると、OnTimer イベントが動き、Label1 の Caption にマウスの座標値が表示されるようになります。 //------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { //POINT 型の変数 TPoint pt; GetCursorPos(&pt); Label1->Caption = IntToStr(pt.x) + ", " + IntToStr(pt.y); } //------------------------------------------------------------------- |