Theres这段代码没有达到第一个else的一些原因? 我从vairous的来源完全一样。比我做了我自己的封装。一切都很好。窗口被创建,消息被处理,事件被生成到客户区的keyborad输入,gl画布工作正常(当我强制绘制时)。Windows消息循环
唯一的问题是,消息循环永远不会离开第一个if。 :/ 我真的被卡住了。
while (!done)
{
if (::PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
{
done = TRUE;
}
else
{
::TranslateMessage (&msg);
::DispatchMessage (&msg);
}
}
else
{
// Code is never reaching this!
draw();
::SwapBuffers(hDC);
idle();
}
}
return msg.wParam;
很显然,当Translate/Dispatch完成时,它将新消息发布到队列中。您应该列出检索到的所有消息,并推断它是什么消息以及它出现的原因。 – sharptooth 2009-07-16 07:18:13
使用间谍我得到了WM_PAINT硬盘与hdc 0.不知道如何产生。 – 2009-07-16 07:32:43