gpt4 book ai didi

c - 窗口关闭后进程保持打开状态

转载 作者:行者123 更新时间:2023-11-30 15:44:45 25 4
gpt4 key购买 nike

我在使用 winapi 时遇到了问题,至少我猜是这样。当我关闭应用程序时,该进程仍然保持“幽灵”状态。窗口像往常一样消失,但进程仍然存在,这阻止了我重新编译..我必须从任务管理器手动终止它。

我不知道代码的哪一部分是错误的,而且它有点长,所以这里有一个完整代码的链接:http://pastebin.com/TmRiCeR4

但我的猜测是,它可能与此循环有关:<​​/p>

while(1) {
if(PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE)) {
if(msg.message == WM_QUIT) {
break;
}

TranslateMessage(&msg);
DispatchMessage(&msg);
} else
draw();

Sleep(100); //crappy way of stopping 10000000000000 loops a second

}

我猜它没有正确地“转义”循环,所以它永远不会在它之后立即到达 closewindow() 函数,但我可能是错的。我部分复制了教程中的代码,尽管我确实更改了它,所以我从教程代码中看不出问题所在。这是我正在谈论的教程(也许已经过时了?):http://bobobobo.wordpress.com/2008/02/11/opengl-in-a-proper-windows-app-no-glut/

Google 也没有给我答案。有什么想法吗?

最佳答案

您还没有显示实际发布退出消息的代码,但如果它是一个简单的 PostQuitMessage(0); 那么您的问题出在您的 PeekMessage()调用:

 if(PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE))

通过提供窗口过滤器 (hwnd),您可以防止 PeekMessage() 检索任何已发布的线程消息(即,消息不是发送到窗口,而是发送到线程)。由于 PostQuitMessage() 发布一条线程消息,因此您的循环将永远不会检索它,因此永远不会退出。

您应该更改您的调用,为第二个参数传递 NULL

关于c - 窗口关闭后进程保持打开状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344198/

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