gpt4 book ai didi

windows - 为什么 IsWindowVisible 使 EnumDesktopWindows 的回调只运行一次?

转载 作者:可可西里 更新时间:2023-11-01 11:14:34 26 4
gpt4 key购买 nike

请看下面的代码。

MyEnumProc 使用以下代码仅运行一次。但是如果我注释掉 IsWindowVisible(wnd);,它会运行很多次。

为什么 IsWindowVisible 会发生这种情况(只运行一次)?我以为 IsWindowVisible 只是一个检查 wnd 属性的函数?

test.c代码:

#include <windows.h>
#include <stdio.h>
BOOL CALLBACK MyEnumProc( HWND wnd, LPARAM lParam )
{
printf("run\n");
IsWindowVisible(wnd);
}

int main( void )
{
EnumDesktopWindows( NULL, MyEnumProc, 0 );
printf("end\n");
return 0;
}

我的环境是:

Windows XP SP3。

海湾合作委员会 3.4.6(mingw)

编译选项为:gcc -o test.exe test.c

我在 cmd.exe 中编译并运行了 test.exe。

最佳答案

您必须返回一个值。我希望您的编译器警告您不是。如果它没有警告您,那么您应该更改选项以使其这样做。

documentation状态:

To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE.

这种终止枚举的能力允许你短路一个枚举。找到所需项目后,无需继续接收回叫。有许多 Windows API 函数遵循这个习惯用法。

关于windows - 为什么 IsWindowVisible 使 EnumDesktopWindows 的回调只运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com