【发布时间】:2013-10-21 01:43:38
【问题描述】:
我在使用 winapi 时遇到了问题,或者我还是在猜测。当我关闭应用程序时,该过程仍然保持为“幽灵”。窗口像往常一样消失了,但是进程仍然存在,这阻止了我重新编译。我必须从任务管理器中手动杀死它。
我不知道代码的哪一部分是错误的,而且有点冗长,所以这里是完整代码的链接:http://pastebin.com/TmRiCeR4
不过我的猜测是,它可能与这个循环有关:
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 也没有给我答案。有什么想法吗?
【问题讨论】:
-
您为什么不使用
GetMessage()和计时器?如果你只想每秒画 10 帧,SetTimer()绰绰有余。 -
我不一定只想每秒画 10 帧。我只是让它循环非常缓慢,因为它没有充分理由在 cpu 上使用 100% 的一个内核,所以我只是让它每秒循环 10 次,直到它真正起作用为止。