WindowFromPoint   ChildWindowFromPoint   ChildWindowFromPointEx

HWND WindowFromPoint(
    POINT Point
);
功能:返回包含点的窗口句柄,Point参数指屏幕坐标。
如果不存在窗口包含这个点,则返回NULL。如果窗口无效或者隐藏,则返回NULL。

备注:WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内。应用程序应该使用ChildWindowFromPoint函数进行无限制查询,这样就可以获得静态文本控件的句柄。

实例:
void CTestDlg::OnTest() 
{
    POINT pt;
    GetCursorPos(&pt);//获取坐标

    HWND hHandle = ::WindowFromPoint(pt);

        if (hHandle == m_hWnd)
    {
        MessageBox("OK");
    }
}
HWND ChildWindowFromPoint(
  HWND hWndParent,   //handle to parent window
  POINT Point        //the coordinates(relative to hWndParent) of the point to be checked
);

功能:返回包含这个点的窗口句柄,即使窗口隐藏或者处于无效状态。(需要指定某个容器窗体,返回该容器窗体中包含点的窗口句柄。)
如果点不在父窗口内,则返回NULL,如果点在父窗口内,但不在任何子窗口上,则返回父窗口的句柄。

另外,特别要注意的是:参数Point不是屏幕坐标,而是相对于容器窗口的坐标。

实例:

void CTestDlg::OnOK() 
{
    POINT pt;
    GetCursorPos(&pt);

    BOOL bOK = ::ScreenToClient(m_hWnd, &pt);//屏幕坐标转换为客户区坐标
    if (!bOK)
    {
        return;
    }

    HWND hHandle = ::ChildWindowFromPoint(m_hWnd, pt);//pt经ScreenToClient转换成相对于容器窗口的坐标。
    if (hHandle == m_button.m_hWnd)
    {
        MessageBox("OK");
    }
}
HWND ChildWindowFromPointEx(
  HWND hwndParent,   // handle to parent window  POINT pt,          // structure with point coordinates  UINT uFlags        // skip options);

Parameters

  • hwndParent
  • [in] Handle to the parent window.
  • pt
  • [in] Specifies a POINT structure that defines the client coordinates (relative to hWndParent) of
    the point to be checked.
  • uFlags
  • [in] Specifies which child windows to skip. This parameter can be one or
    more of the following values.

    Value Meaning
    CWP_ALL Does not skip any child windows
    CWP_SKIPINVISIBLE Skips invisible child windows
    CWP_SKIPDISABLED Skips disabled child windows
    CWP_SKIPTRANSPARENT Skips transparent child
    windows

Return Values

The return value is a handle to the first child window that contains the
point and meets the criteria specified by uFlags. If the point is within
the parent window but not within any child window that meets the criteria, the
return value is a handle to the parent window. If the point lies outside the
parent window or if the function fails, the return value is NULL.

Remarks

The system maintains an internal list that contains the handles of the child
windows associated with a parent window. The order of the handles in the list
depends on the Z order of the child windows. If more than one child window
contains the specified point, the system returns a handle to the first window in
the list that contains the point and meets the criteria specified by
uFlags.

时间: 2024-10-12 19:47:53

WindowFromPoint   ChildWindowFromPoint   ChildWindowFromPointEx的相关文章

QQ截图时窗口自动识别的原理(WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx,RealChildWindowFromPoint)

新版的QQ在截图时加入了窗口自动识别的功能,能根据鼠标的位置自动画出下面窗口的轮廓.今天有人在论坛上问起这个问题,下面我们来探讨这个功能的实现原理. 首先我们要明白截图软件的基本原理,截图时实际上是新建了一个全屏窗口,然后将当前桌面的截图画在上面,大部分截图软件,包括QQ都是这么做的.根据鼠标位置获取下层窗口,有好几个类似的API可以用(WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx,RealChildWindowFro

英文不好也能快速"记忆" API

英文不好不要紧,把API函数导入打字练习类软件,即是练习打字速度,提高编程效率:也能短时间记忆API. 坚持每天打一遍,约2小时,连续打两周,会对API有很好的记忆,此方法是结合英文学习方法!以下是Window API函数例表,大家可以试试效果特别好! AbnormalTermination AbortDoc AbortPath AbortPrinter AbortProc AbortSystemShutdown AccessNtmsLibraryDoor ActivateKeyboardLay

WindowFromPoint()与ChildWindowFromPoint()的区别

1. WindowFromPoint() 函数原型:HWND WindowFromPoint(POINT Point): 函数功能:该函数获得包含指定点的窗口的句柄,Point参数指屏幕坐标 参数: Point:指定一个被检测的点的POINT结构. 返回值: 返回值为包含该点的窗口的句柄.如果不存在窗口包含这个点,则返回NULL.如果窗口无效或者隐藏,则返回NULL. 通过测试,发现获取部分控件句柄时,返回的都是父窗口的句柄.包括Static Text, GroupBox等等. 例如: void

GetCursorPos/WindowFromPoint/SendMessage

GetCursorPos/WindowFromPoint/SendMessage (用API函数向Edit框发送字符) GetCursorPos(mPoint); DTWND:=WindowFromPoint(mPoint); SendMessage(dtwnd, WM_IME_CHAR,ord('A'),1); 以上用到的三个函数介绍:GetCursorPos: 函数功能:该函数检取光标的位置,以屏幕坐标表示. 函数原型:BOOL GetCursorPos(LPPOlNT IpPoint):

WindowFromPoint -- 获得包含指定点的窗口的句柄

 WindowFromPoint 函数功能: 该函数获得包含指定点的窗口的句柄. 函数原型: HWND WindowFromPoint(POINT Point): 参数: Point:指定一个被检测的点的POINT结构. 返回值: 返回值为包含该点的窗口的句柄.如果包含指定点的窗口不存在,返回值为NULL.如果该点在静态文本控件之上,返回值是在该静态文本控件的下面的窗口的句柄. 备注: WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内.应用程序应该使用Child

一个有意思的API——WindowFromPoint

这个函数是这么定义: HWND WindowFromPoint( POINT Point ); 我们从他的定义可以看出,这个函数的作用是从一个点的位置的了对应对话框的句柄. 获得句柄我们可以干啥呢,我们可以继续根据句柄获得指向对对话框的指针,这样我们就可以干很多事情了. 下面我们写个小demo玩玩啦. 先建立一个MFC的简单对话框,Test: 重载WM_MOUSEMOVE消息,下其中添加下面的代码 HWND hwnd = ::WindowFromPoint(point); ::PostMessa

window窗口详解

窗口 在图形化的基于win32的应用程序,窗口是屏幕的矩形区域,应用程序显示输出并接收来自用户的输入,因此,一个图形化基于win32的应用程序的首要任务之一就是创建一个窗口. 窗口与其它窗口共享屏幕,[本事]包括来自其它应用程序的窗口,每次只有一个窗口可以接收来自用户的输入,用户可以使用鼠标.键盘或其它输入设备与此窗口以及拥有该窗口的应用程序进行交互. 关于窗口 这个概述描述了应用程序用来创建和使用窗口的编程单元:管理窗口之间的关系:以及大小.移动.和显示窗口:概述包括以下主题: 桌面窗口  

DELPHI下API简述(1800个API)

DELPHI下API简述 http://zero.cnbct.org/show.asp?id=144 auxGetDevCaps API 获取附属设备容量 auxGetNumDevs API 返回附属设备数量 auxGetVolume API 获取当前卷设置 auxOutMessage API 向输出设备发送消息 auxSetVolume API 设置附属设备卷 AbortDoc API 终止一项打印作业 AbortPath API 终止或取消DC中的一切路径 AbortPrinter API

准确看看 user32.dll 里有哪些导出函数(win7-32)

看看 user32.dll里有哪些导出函数,大家都会,但准确性???以MS dumpbin为标准,要做出来结果一模一样,才表示代码完全正确. 直接上代码: 1 // ListExport.cpp : Defines the entry point for the console application. 2 // 3 #include "stdafx.h" 4 #include <windows.h> 5 #include <winnt.h> 6 7 exter