Windows ChildWindowFromPointEx和ChildWindowFromPoint除了;旗帜;参数

Windows ChildWindowFromPointEx和ChildWindowFromPoint除了;旗帜;参数,windows,winapi,visual-c++,Windows,Winapi,Visual C++,Windows API具有和函数,它们的不同之处在于后者具有uFlags参数,指定要跳过的窗口 看起来,如果我将CWP\U ALL传递到ChildWindowFromPointEx()中,我将获得与ChildWindowFromPoint()完全相同的效果 uFlags参数的唯一区别是什么?当我需要ChildWindowFromPointEx()行为时,我可以在任何地方使用ChildWindowFromPointEx()并传递CWP\u ALL吗?如果您希望始终将ChildWindowFromP

Windows API具有和函数,它们的不同之处在于后者具有uFlags参数,指定要跳过的窗口

看起来,如果我将
CWP\U ALL
传递到
ChildWindowFromPointEx()
中,我将获得与
ChildWindowFromPoint()完全相同的效果


uFlags参数的唯一区别是什么?当我需要
ChildWindowFromPointEx()
行为时,我可以在任何地方使用
ChildWindowFromPointEx()
并传递
CWP\u ALL
吗?

如果您希望始终将ChildWindowFromPointEx与CWP\u ALL一起使用,您可以使用ChildWindowFromPoint()


如果您希望始终使用ChildWindowFromPoint,则可以将ChildWindowFromPointEx与CWP_ALL一起使用

ChildWindowFromPoint等同于带有CWP_ALL的ChildWindowFromPointEx


建议:使用ChildWindowFromPointEx(您可能有一天会使用其他标志值)

如果有帮助,我创建了一个调用这两个函数的快速测试应用程序,并进入反汇编的USER32.DLL查看调用的位置

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

主要处理委托给位于
75612495
的呼叫

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


由于该入口点是第一个函数调用的目标,我很清楚,
ChildWindowFromPoint
调用
ChildWindowFromPointEx
,大概是将
uFlags
设置为
CWP\u ALL
(我的汇编程序知识有限,但我正在努力研究调用之前的
push 0
CWP\u ALL
被定义为零)。

根据MSDN的说法……是的,它们完全相同(除了可以用来跳过某些窗口的uFlags参数)。关于它们的实现?天知道……谁对此投了赞成票“基于意见”我想知道?您是否没有花足够的时间试图找出两个看似相同的API概念之间的细微差别?我投了“基于意见”的票“因为这是我的最佳选择……如果根据文档,它们是相同的,那么讨论纯粹是猜测。@阿德里亚诺:文档在哪里明确地说它们是相同的?两个函数的描述都是相同的(除了ChildWindowFromPointEx中的标志驱动的以外)那么我可以放心地假设,除非我们有任何其他证据……问题是相反的——如果我需要
ChildWindowFromPoint()
我可以将
ChildWindowFromPointEx()
CWP\U ALL
一起使用吗?当然!是的。这就是所有人都在告诉你的