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