hyrule 2022. 5. 3. 14:53

* GetMessage: 메시지 큐에서 메시지를 꺼내오는 함수이다.
    단, 메시지 큐가 비어있을 경우 메시지가 들어올 때까지 빠져나올 수 없다.
    이렇게 멈춰서 대기하고 있는 것을 블로킹 모드라고 한다.
    큐가 비어서 멈춰있는 시간을 윈도우 데드타임이라고 한다.

    게임의 경우에는 잘 쓰이지 않는다.
    사람이 아무리 키보드 마우스로 입력을 많이 해 봐야 컴퓨터가 처리하는 데에는
    찰나의 시간밖에 안 걸리기 때문에, 데드타임이 매우 길기 때문이다.

    일반 프로그램이 데드타임에 입력이 들어오기만을 기다린다면,

    게임은 이 데드타임에 게임의 로직을 처리한다.

    그렇기에 게임의 경우에는 PeekMessage라는 함수를 사용한다.
    메시지 큐에서 메시지를 꺼낸 뒤의 데드타임동안 프레임을 그리는 것이다.

    

    MSG: 운영체제가 만들어준 메시지를 얻어오기 위한 구조체
    &msg: 콜 바이 어드레스

MSG msg;
GetMessage(&msg, nullptr, 0, 0);

 

* PeekMessage: 이 함수도 메시지 큐에서 메시지를 꺼내오는 함수이다.
단, 이 함수는 메시지 큐가 비어있을 경우
false를 반환하며 바로 빠져나오게 된다.

PeekMessage(&msg, m_hWnd, 0, 0, PM_REMOVE);