이 코드에 대한 몇 가지 이유가 첫 번째 else에 도달하지 않습니까? 나는 근사한 소스에서 정확히 같은 것을 얻었다. 내 캡슐화보다. 모든 것이 잘됩니다. 창이 생성되고, 메시지가 처리되고, 이벤트가 클라이언트 영역의 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;
분명히 번역/발송이 완료되면 새로운 메시지를 대기열에 게시하는 것입니다. 검색된 모든 메시지를 나열하고 메시지의 유추와 이유를 추론해야합니다. – sharptooth
스파이를 사용하여 hdc 0으로 WM_PAINT의 하드 플로우를 얻었습니다. 어떻게 생성되는지는 알 수 없습니다. –