본문 바로가기

Win32 api

Win32 api 강의 6화.

- PeekMessage 사용.

기존의 GetMesage 함수는 메시지 큐에 메시지가 없으면 무한정 대기함.

반면 PeekMessage 함수는 bool 값으로 메시지가 있으면 true, 없으면 false 로 바로 반환해버림.

 

DWORD dwStartTick = GetTickCount();

DWORD dwMsgTickCount = 0;

// 기본 메시지 루프입니다:
while (true)
{     
    // PeekMessage: 메시지 유무와 상관없이 바로 반환.
    if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
    {
        DWORD dwMsgStartTick = GetTickCount();
        ...
        DWORD dwMsgEndTick = GetTickCount();
        dwMsgTickCount += (dwMsgEndTick - dwMsgStartTick);
    }
    // 메시지가 없는 동안 호출.
    else
    {

    }

    DWORD dwCurTick = GetTickCount();

    if (dwCurTick - dwStartTick >= 10000)
    {
    	// 중단점.
        MessageBox(g_hWnd,
            L"10초 경과", 
            L"시간 측정",
            MB_OK);
            
        dwStartTick = dwCurTick;
    }
}

이렇게 GetTickCount 함수를 이용해서 PeekMessage를 사용했을 때

메시지가 있을 때 동작하는 시간을 대충 계산해볼 수 있다. 

 

프로그램을 실행하고 사각형을 마구마구 생성하고, 마우스를 이리저리 움직여도 대략 

메시지 처리 시간이 10초 중 5초 정도로 측정됨. 메시지가 없는 시간이 꽤나 많을 것으로 예상된다. 

'Win32 api' 카테고리의 다른 글

Win32 api 강의 8화.  (0) 2025.09.12
Win32 api 강의 7화.  (0) 2025.09.11
Win32 api 강의 5화.  (0) 2025.09.11
Win32 api 강의 4화.  (0) 2025.09.10
Win32 api 강의 3화.  (0) 2025.09.10