C & C++/C & C++

[Tip] Sleep() 함수 대신 프로그램 딜레이 시키기

izen8 2011. 3. 31. 09:11

Sleep()함수를 쓰면 지정된 시간동안, 메세지루프를 돌지 않기 때문에 프로그램이 먹통이 되거나 우리가 원하는 결과가 나타나지 않을 수 있다. 아래의 함수를 정의해서 사용하면, Sleep()하는 효과를 나타내면서 메세지루프를 돌기 때문에 위와 같은 현상을 해결할 수 있다.



void
 CNumberGameDlg::Wait(DWORD dwMillisecond)
{
MSG msg;
DWORD dwStart;
dwStart = GetTickCount();

while(GetTickCount() - dwStart < dwMillisecond)
{
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}