我一直在开发一个程序,在该程序中,我使用EnumWindows函数检测 Activity 的Windows并将其句柄保存在列表中。
现在,每次运行到此为止的调试器时,调试器都会跳过带有EnumWindows函数的行,而不会返回错误。

我的代码有问题吗?还是我必须获得一个额外的库才能使用此功能?希望有人知道如何解决这个问题
这是包含EnumWindows的类的代码:

Center :: Center(int initInterval) : interval(initInterval)
{
    detectWindows();
}

int Center :: getInterval()
{
    return interval;
}
void Center :: setInterval(int intrvl)
{
    interval = intrvl;
}

void Center :: initializeDisplays()
{

}

void Center :: detectWindows()
{
    EnumWindows(detectWindowsProc, (LPARAM)&windowList);  //Debugger skips this line
}

最佳答案

“跳过界线”是什么意思?调试器将单步执行它,但不能执行,因为您没有Windows函数可用的调试信息。通常,如果在detectWindowsProc中放置一个断点,则应该命中该断点。如果有要枚举的窗口,EnumWindows有一些奇怪的怪癖,请参见MSDN并在其中进行评论以获取更多信息:
EnumWindows function

08-28 16:22