- 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 |