mfc 타이머 예제

Cód: --- | Fabricante: ---
Publicado em: Sem categoria

어떤 시점에서, 우리는 타이머의 “똑딱”을 중지 할 것입니다. Win32 타이머는 어떻게 작동합니까? 먼저 타이머를 만들고 경과 시간을 지정하고(선택적으로) 창에 연결합니다. 타이머를 만든 후 WM_TIMER 메시지를 창 메시지 큐로 보내거나 창이 지정되지 않은 경우 응용 프로그램 큐로 보냅니다. 이 메시지를 처리하여 정기적으로 실행하려는 코드를 호출할 수 있습니다. 타이머는 WM_TIMER 메시지가 소멸될 때까지 전송됩니다. 대기 가능한 타이머로 작업을 시작하려면 기존 타이머를 열거나 새 타이머를 만들어야 합니다. 호출을 사용하여 만들기를 수행할 수 있습니다: 이제 해상도를 설정했습니다. SetTimer와 동등한 멀티미디어 타이머는 다음과 같습니다 : 응용 프로그램은 WM_TIMER 메시지가 기본 창 프로시저가 아니라 다음 코드 샘플에서와 같이 응용 프로그램 정의 콜백 함수에 의해 처리되는 타이머를 만들 수도 있습니다. 은 타이머를 생성하고 콜백 함수 MyTimerProc를 사용하여 타이머의 WM_TIMER 메시지를 처리합니다. MSDN에 따르면 응용 프로그램은 타이머를 사용하여 지정된 시간이 경과한 후 창에 대한 이벤트를 예약합니다. 그것은 우리가 타이머를 만들고 uElapse 밀리 초의 시간 간격을 지정하는 경우, 우리가 그것을 파괴 할 때까지, 모든 uElapse 밀리 초 “뭔가”를 할 것을 의미한다. “무언가”가 무엇인지 지정하는 것은 우리에게 달려 있습니다.

위에 표시된 예제는 표준 Win32 타이머의 처리와 유사한 방식으로 작성되었습니다. 그러나 실제로는 멀티미디어 타이머의 기능을 별도의 클래스로 래핑하고 동일한 작업을 수행하는 것이 좋습니다. 한 번 실행되는 C++/Win32에서 타이머를 설정하면 일반적으로 많은 작업이 필요하며, 실제로 수행하려는 작업은 잠시 기다렸다가 함수를 실행하는 것뿐이지만 mainline 코드 실행을 차단하지는 않습니다. 이 간단한 클래스는 OneShot 타이머를 쉽게 만듭니다. 더 이상 정적 함수와 `this`포인터로 어려움을 겪지 않습니다. 이제 대기 가능한 타이머 개체에 대한 핸들이 있으면 유용한 작업을 수행할 수 있습니다. 그것을 설정 하려면, 우리는 함수를 사용 합니다.: 먼저, 타이머를 만들고 기본 타이머 큐에 추가 해야 합니다. 이를 위해 타이머의 정확도가 제한되어 있음을 이해하는 것이 중요합니다. Windows는 실시간 운영 체제가 아니며(Windows CE 제외) 타이머가 매우 작은 시간 간격(예: 10ms)을 처리하는 것은 합리적이지 않습니다. 멀티미디어 타이머를 사용할 때 첫 번째 단계는 타이머 해상도를 설정하는 것입니다. 타이머 해상도는 무엇입니까? 타이머의 정확도를 결정합니다. 예를 들어, 경과 시간이 1000이고 해상도가 50이면 멀티미디어 타이머는 950- 1050밀리초마다 “틱”됩니다.

CWnd에서 Win32 타이머의 일반적인 사용 – 파생 된 클래스는 다음과 같습니다 : 이러한 타이머에 의해 생성 된 WM_TIMER 메시지를 처리하려면 hwnd 매개 변수의 창 프로시저에 WM_TIMER 사례 문을 추가합니다.

Compartilhe