메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

C/C++/MFC

  2가지 방법이 있습니다.
1. 멀티미디어 타이머를 사용하세요.
MMRESULT timeSetEvent(
UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD dwUser,
UINT fuEvent
);
uResolution만큼의 시간(msec)이 지나면 lpTimeProc로 함수콜이 옵니다.
자세한 인자의 사용법은 도움말을 참조하십시요.

2. Thread를 사용하세요.
1초에 한번씩 불리어져야 하는 함수를 thread에서 불러주면 됩니다.
1초에 한번씩 불리어질려면
걸린시간 = 함수가 불리어지고 난 시점 - 이전에 함수를 부른 시점
을 계산하여 (1000msec-걸린시간)만큼 Sleep()을 하시면 1초 간격으로
원하는 함수가 호출될 것입니다.

일반 타이머는 윈도우 메세지를 통해서 호출되기 때문에
여러 프로그램이 동작중이면 정확하게 불리어 지지 않습니다.
반면에 멀티미디어 타이머나 스래드는 상당히 정확하게 불리어 집니다.
다만 멀티미디어 타이머를 너무 빠른 주기로 사용하면 화면에 그래픽을
그려주는 부분이 느려질 수 있습니다.
제가 사용한 바로는 스래드를 사용하는 것을 권합니다.
시스템에 무리를 주지 않으면서 원하는 제어를 할 수 있습니다.