BCB Client

- C++ Builderを用いたWindowsプログラミングメモ -

WindowFromPoint [マウス位置からウィンドウハンドルを取得する]

マウスカーソルの位置を利用してウィンドウハンドルを取得してみる。

GetCursorPos    マウスカーソルの位置を取得
WindowFromPoint 指定座標にあるウィンドウハンドルを取得

windowfrompoint.png


 ←こんな感じでフォームを作ってみた




TEdit名   HandleEdit, TitleEdit
TButton名 WindowFromPointBtnとしました。

WindowFromPointBtnを押すとマウスカーソル位置の
ウィンドウハンドルとタイトルが表示されます。

試しにメモ帳を起動して、マウスカーソルをメモ帳の
タイトルバー上に持って行き、
EnterキーでWindowFromPointBtnを押してやります。
すると、メモ帳のハンドルとタイトルが表示されるのです。




<Unit1.cpp>
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WindowFromPointBtnClick(TObject *Sender)
{
	POINT pt;

	// マウスカーソルの位置をスクリーン座標で取得
	GetCursorPos(&pt);

	// カーソル位置からウィンドウハンドル取得
	HWND hWnd = WindowFromPoint(pt);

	// 後はいつも通りの表示処理を行う
	int  tLen    = GetWindowTextLength(hWnd) + 2;   // タイトル文字長取得
	char *sTitle = (char *)malloc(tLen);            // タイトル格納用領域確保
	GetWindowText(hWnd, sTitle, tLen);              // タイトル取得

	// Editに表示
	HandleEdit->Text = IntToHex((int)hWnd, 8);
	TitleEdit->Text  = sTitle;

	// 解放
	free(sTitle);
}
//---------------------------------------------------------------------------

[ トップ | 一覧 | 前へ | 次へ ]

  • トップ
  • 一覧
  • リンク
  • 掲示板

Copyright © BCB Client. All Rights Reserved. Template by ネットマニア