WinAPI

GetMessage함수, PeekMessage함수

Nin 2021. 1. 15. 04:51

Windows 데스크톱 애플리케이션으로 프로젝트를 만들면

기본적으로 GetMessage 함수로 프로그램이 작성되있다.

이 Getmessage라는 함수는 메세지가 발생할때까지 멈춰있는 함수로

메세지가 발생하면 프로그램이 돌아가는 방식이다.

실시간으로 처리되는 게임에는 사용이 불가능하다고 볼 수 있다.

그래서 PeekMessage라는 함수를 사용하는데

이 PeekMessage 함수는 자기를 실행할때마다

메세지가 없으면 그냥 리턴되어버린다.

즉, 메세지가 없는 시간에 프로그램이 돌아가고 이를 데드타임이라고 한다.

while(true)
{
   if(0 != PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
   {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   
   else
   {
      //게임루프
   }
}

이런식으로 사용할 수 있고 사실 메세지는 발생하는 빈도수가 작다.

그말은 위의 코드는 평범한 while문이 되고 CPU가 허용하는 최대 처리 속력으로 돈다.

 

'WinAPI' 카테고리의 다른 글

Virtual Destructor(가상 소멸자)  (0) 2021.01.18
싱글톤 패턴  (0) 2021.01.15
Rectangle 함수  (0) 2021.01.14
HDC , GetDC 함수, 윈도우(창) 표현,SetPixel 함수  (0) 2021.01.14
RValue,LValue reference  (0) 2021.01.14