C/C++/MFC
while에서 버벅거리지않고 1초 계산하는소스
2006.05.25 17:50
MFC의 Sleep(1000) 을 이용하면 정확한 1초를 얻지 못한다.
정확한 시간을 측정하기 위해서는 시스템 시간을 이용해야 한다.
CTime CurrentTime, OldTime;
CTimeSpan TimeInterval;
BOOL bLoop;
bLoop = TRUE;
OldTime = CTime::GetCurrentTime();
while(bLoop){
MSG msg;
while(PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)){
switch(msg.message){
case WM_QUIT:
case WM_DESTROY:
case WM_CLOSE:
PostQuitMessage(0);
return ;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
CurrentTime = CTime::GetCurrentTime();
TimeInterval = CurrentTime - OldTime;
if(TimeInterval.GetSeconds()>1){
bLoop = FALSE;
}
}
정확한 시간을 측정하기 위해서는 시스템 시간을 이용해야 한다.
CTime CurrentTime, OldTime;
CTimeSpan TimeInterval;
BOOL bLoop;
bLoop = TRUE;
OldTime = CTime::GetCurrentTime();
while(bLoop){
MSG msg;
while(PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)){
switch(msg.message){
case WM_QUIT:
case WM_DESTROY:
case WM_CLOSE:
PostQuitMessage(0);
return ;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
CurrentTime = CTime::GetCurrentTime();
TimeInterval = CurrentTime - OldTime;
if(TimeInterval.GetSeconds()>1){
bLoop = FALSE;
}
}