|
SetTimer(Handle,1,1000,NULL);
를 윈도우가 생성 될때 호출하고 ( 메세지 받을 윈도우 핸들,타이머 구분자,발생간격, NULL)
첫번째 인수로 지정한 윈도우에 두번째 인자를 식별자로 하여 세번째 시간(밀리 세컨드)마다 네번째 함수를 실행 시킵니다. 하지만 이렇게 할 경우 클래스에 매핑 시키기가 곤란합니다. 그래서 보통 4번째 인자는 NULL로 하여 WM_TIMER메세지가 발생하게 합니다.
WM_TIMER //
wParam 에 타이머 구분자가 날아 옵니다
프로그램에는 타이머를 여러개 만들수 있고 이 타이머들은 모두 동일한 WM_TIMER 메세지를 발생 시킬수 있습니다.
그래서 SetTimer에서 두번째로 준 구분자가 WPARAM에 넘어 오므로 이를 사용해서 어느 타이머인지 구분합니다.
KillTimer(Handle,1);
를 윈도우가 소멸 되기 전에 호출 (메세지 받은 윈도우 핸들,타이머 구분자)
타이머가 필요 없으면 위와 같이 종료 합니다.
WM_TIMER메세지는 모두다 발생하지는 않습니다.
예를 들어 내컴퓨터가 1초에 한개의 윈도우 메세지를 처리할 능력이 있다고 합시당
타이머는 1/100초 마다 발생 시키도록 했다고 하고요.
일반적으로 생각하기엔 이렇게 하면 WM_TIMER메세지 때문에 프로그랭은 뻗어 버리거나 타이머 메세지만 처리 하다가 끝나 버릴겁니다.
하지만 이런 프로그램은 대체로 타이머 메세지 하나 처리 하고 다른 메세지 하나 처리 하고 ....이런씩으로 반복을 합니다. 왜냐하면 타이머 메세지는 메세지가 발생하면 응용 프로그램의 메세지 큐에 타이머 메세지가 있으면 그냥 사라집니다.(그냥 사라지는지 구 타이머 메시지를 새타이머 메세지로 바꾸는지 모르지만) 이점 유의 하시기 바랍니다.
타이머 부분은 함수의 인자만 봐도 해석 할 수 있으니 직접 도움말을 한번 보시기 바랍니다.
어차피 영어를 잘해도 컴퓨터 기본 지식이 있어야 되고 도움말을 읽어 본 경험이 있어야 도움말 보는 능력이 생기므로 영어 못한다 하지말고 이렇게 쉬운것 부터 보는 버릇 들이세요
그럼
오미미 님이 쓰신 글 :
: 답변 정말 감사합니다
: 타이머에 관해서 이야기를 하고자 합니다.
: 시간의 흐름에 따라 이미지가 움직에게 하고 싶은데 어떻게 해야 하나요
: 답변좀 부탁 드립니다.
|