windows - 除了 "flags"参数外,ChildWindowFromPointEx 和 ChildWindowFromPoint 有何不同?

标签 windows winapi visual-c++

Windows API 有 ChildWindowFromPoint()ChildWindowFromPointEx()函数,它们的区别在于后者有 uFlags 参数指定要跳过的窗口。

看起来如果我将 CWP_ALL 传递给 ChildWindowFromPointEx(),我将获得与使用 ChildWindowFromPoint() 完全相同的效果>.

uFlags 参数的唯一区别是什么?我可以只在任何地方使用 ChildWindowFromPointEx() 并在需要 ChildWindowFromPoint() 行为时传递 CWP_ALL 吗?

最佳答案

如果有帮助的话,我破解了一个调用这两个函数的快速测试应用程序,然后进入反汇编的 USER32.DLL 以查看调用的位置。

对于 ChildWindowFromPoint,在一些序言之后,我达到了这一点:

child

主要处理委托(delegate)给 75612495 的调用。

然后,对于 ChildWindowFromPointEx,我进入程序集并得到:

childex

因为那个入口点是第一个函数调用的目标,所以我很清楚 ChildWindowFromPoint 调用 ChildWindowFromPointEx,大概是 uFlags 设置为 CWP_ALL(我的汇编程序知识有限,但我正在努力查看调用之前的 push 0 - CWP_ALL 已定义为零)。

关于windows - 除了 "flags"参数外,ChildWindowFromPointEx 和 ChildWindowFromPoint 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066504/

相关文章:

windows - xampp Windows mariadb无法启动

java - 是否有用于访问 native Windows API 的 Java 库?

c++ - 删除 ptr 时堆损坏

C# 和 .NET 文件夹 ID

c++ - 在 C++20 模块中打破循环依赖的前向声明不起作用

visual-c++ - Gdiplus 64 位颜色

javascript - Cypress - 执行时出错 'cypress open'

c - WinApi 基础服务教程?

c++ - 列出文件夹中的所有文件返回空列表

c++ - C++中的名称修饰或名称修饰