C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[52497] Re:Re:멀티미디어 타이머 실행 방지 ??
쩡이 [xtremegroove] 1391 읽음    2008-03-03 10:30
답변 감사드립니다. ㅡ0ㅡ;;



ㅅ 님이 쓰신 글 :
: 쩡이 님이 쓰신 글 :
: : 멀티미디어 타이머에 대해 몇가지 질문드립니다.
: : 멀티미디어 타이머의 생성/실행은 잘 됩니다.
: :
: : 타이머의 Interval 보다 타이머 내의 처리 시간이 더 걸려도
: : 일반 타이머와 마찬가지로 중복 실행되지는 않아보입니다. (확실하진 않아요..)
: :
: : 그런데..
: : 디버깅 중, 브레이크 포인트를 잡았을 때, 멈춰있던 시간만큼
: : 쌓여있던 타이머 이벤트가 한꺼번에 밀려오면서 PC가 한동안 먹통이 되네요..
: : 이걸 막을 방법이 있을까요??
: :
: : //타이머 콜백 함수
: : void CALLBACK TimeProcess(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
: : {
: :     static bool bProcCheck1= true;
: :
: :     if(bProcCheck1) {
: :         bProcCheck1= false;
: :
: :         Form1->TimerProcEvent();  //타이머에서 처리할 내용..
: :
: :         bProcCheck1= true;
: :     }
: :     else {
: :         iProcOver1++;  //타이머 이벤트가 끝나기 전에 다시 실행이 될 때..
: :         return;
: :     }
: : }
: :
: : 이렇게 처리할려고 하는데.. else 문으로 들어오지도 않습니다.
: :
: : 그리고..
: : 멀티미디어 타이머 관련 함수 이외의 함수 사용 시에는 PostMessage()를 사용하라는데,
: : vcl 관련(Label이나 Edit 등등..)된 것 말고는 직접 사용해도 문제 없어보이는데요..
: : 이 부분에 대해 좀 더 설명 부탁드립니다.
:
: 아래는 타이머가 하나라는 가정하에 검사하는 예입니다.
:
: UINT g_TimerId=0;
: UINT g_Delay=100;
: UINT g_Resolution=10;
: DWORD g_LastTimeCalled=0;
:
: void CALLBACK TimeProc(UINT uID,UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
: {
:  DWORD ct = timeGetTime();
:  DWORD elapsed = ct - g_LastTimeCalled;
:  DWORD pat = g_Resolution*2 + 10;
:  g_LastTimeCalled = ct;
:  if(elapsed>g_Delay-pat && elapsed<g_Delay+pat){
:    //이곳은 아마도 타이머 이벤트에 상응하여 제대로된 간격으로 이 콜백함수가 호출될 때 진입할 것임.
:  }else{
:    //이곳은 브레이크 걸려서 밀려있던 이 콜백함수 호출이 g_Delay 무시하고 마구 쏟아져 들어올 때 진입할 것임.
:    // 이러한 호출을 무시하려면 그냥 return 하면 될 것으로 보임
:  }
: }
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:  if(g_TimerId==0){
:    g_TimerId = timeSetEvent(g_Delay,g_Resolution,(LPTIMECALLBACK)TimeProc,0,TIME_PERIODIC);
:    g_LastTimeCalled = timeGetTime();
:  }
: }

+ -

관련 글 리스트
52452 멀티미디어 타이머 실행 방지 ?? 쩡이 1740 2008/02/27
52482     Re:멀티미디어 타이머 실행 방지 ?? 1991 2008/02/29
52497         Re:Re:멀티미디어 타이머 실행 방지 ?? 쩡이 1391 2008/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.