C++ 枚举子窗口不';t函数,但enumWindows有。。。? 标题

C++ 枚举子窗口不';t函数,但enumWindows有。。。? 标题,c++,windows,C++,Windows,我不知道为什么,但当我开始枚举窗口时,它运行正常,但枚举子窗口不会进入函数。。。并在代码中移动。。。 如果我将hwnd=0,它将运行。。。不知道为什么不使用hwnd查找子窗口 enter code here #include "stdafx.h" #include <Windows.h> #include <iostream> using namespace std; HWND h; int WPoc, CHPoc; static BOOL CALLBACK EnumWi

我不知道为什么,但当我开始枚举窗口时,它运行正常,但枚举子窗口不会进入函数。。。并在代码中移动。。。 如果我将hwnd=0,它将运行。。。不知道为什么不使用hwnd查找子窗口

enter code here
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
HWND h;
int WPoc, CHPoc;
static BOOL CALLBACK EnumWindowsProc(HWND hProg, long lParam)
{
    WPoc++; 
    cout << WPoc << ": " << hProg << endl;
    if(WPoc == 5) h = hProg;
    if (WPoc > 20) return FALSE;
    return TRUE;
}
static BOOL CALLBACK EnumChildProc(HWND hProg, long lParam)
{
    CHPoc++;
    cout <<"ch "<< CHPoc << endl;
    if (CHPoc > 20) return FALSE;
    return TRUE;
}
void Search()
{
    WPoc = 0;
    BOOL ProcSuccess;
    ProcSuccess = EnumWindows((WNDENUMPROC)EnumWindowsProc,NULL);
}
void SearchMap()
{
    CHPoc = 0;
    BOOL ProcSuccess;
    ProcSuccess = EnumChildWindows( h,(WNDENUMPROC)EnumChildProc,NULL);
}

int _tmain(int argc, _TCHAR* argv[])
{
    Search();
    SearchMap();

    return 0;
}
在此处输入代码
#包括“stdafx.h”
#包括
#包括
使用名称空间std;
HWND-h;
int WPoc、CHPoc;
静态BOOL回调EnumWindowsProc(HWND hProg,长LPRAM)
{
WPoc++;

不能这对你不起作用,因为你发现窗口没有子窗口。调试你的东西。在
Serach()
后粘贴breackpoint,查看
h
的值。打开Spy++并找到与
h
值相同的句柄。查看此窗口是否有子窗口。 可能的产出:

1: 0004069E
2: 000305C4
3: 00030526
4: 00010158
5: 000100BA
6: 000100BC
7: 000100A6
8: 000100AA
9: 000100AC
10: 0001008E
11: 000100A2
12: 000100A4
13: 00010086
14: 00050598
15: 0006052E
16: 0010042E
17: 0011041A
18: 000D040C
19: 000803B8
20: 000903BC
21: 000903C8
ch 1
ch 2
ch 3
ch 4

您发布的程序的输出不是由源代码决定的


这取决于EnumWindows枚举的第五个窗口的实际窗口,该窗口依赖于系统。如果该窗口没有子窗口,则传递给EnumChildWindows的回调将永远不会被调用——显然,在您的情况下,就是这样。

您是否确认在pa之前将
h
实际设置为有效句柄将它传递到
EnumChildWindows
?请注意,当您将0传递到
EnumChildWindows
时,它相当于
EnumChildWindows
。是的,我测试了更多窗口的句柄(在原始程序中,每个程序都有名称)…但它不会启动函数…不要输入它。只有当h为0时,什么是简单的枚举窗口。只有当没有窗口有子窗口时…但按钮不是也有窗口吗?但我也尝试在程序中打开另一个窗口,但它没有找到任何窗口。我是windows编程新手,所以我没有想法…我一直在看一些无风的程序ows…:)