忍者ブログ
Comments
[03/30 のん]
TrackBack
Counter
blogRank
忍者ブログ [PR]
http://lresult.blog.shinobi.jp/
Borland C++ Builderを用いたWindowsプログラミングメモブログ

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

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

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);
}
//---------------------------------------------------------------------------

PR
Comments
お名前
メールアドレス
パスワード
タイトル
コメント
TRACKBACK
TrackBack URL :
"LRESULT" WROTE ALL ARTICLES.
PRODUCED BY SHINOBI.JP @ SAMURAI FACTORY INC.