【发布时间】:2013-12-16 10:59:01
【问题描述】:
我正在处理一个有多个窗口的项目。 当我按下回车键时,我想关闭活动窗口。
问题是所有的窗口都关闭了。我想检查窗口是聚焦/活动还是在前台,以便我可以更改焦点,使其不会关闭所有窗口。
当我运行代码时,我总是得到“我没有关闭”。过了一会儿,它们都关闭了。
if(GetFocus() == currentWindow->getHandler() || GetForegroundWindow() == currentWindow->getHandler() || GetActiveWindow() == currentWindow->getHandler() )
{
std::cout << "Is the same";
if(windows.front() != currentWindow)
{
SetForegroundWindow(SetFocus(windows.front()->getHandler()));
DeleteWindow(currentWindow)
}
else
{
SetForegroundWindow(SetFocus(windows.back()->getHandler()));
DeleteWindow(currentWindow);
}
}
else
{
std::cout << "I dont close!";
DeleteWindow(currentWindow);
}
Sleep(500);
}
【问题讨论】:
-
做一些调试。看看 out if 中的条件如何评估。这将告诉您为什么选择“我不关闭”分支。显然我们不能告诉你。打电话给
Sleep是为了什么? -
我使用了调试和焦点窗口的更改按我的计划进行,但所有窗口仍然关闭。睡眠是为了让我可以正常监控它。否则我每秒得到 50 次更改。在 DeleteWindow(currentWindow) 我只说 exit(1);有没有更好的关闭窗口的方法?