▶ 뭉충닷컴
 
mungchung.com login
Site Search
My Space
주절주절...
공부방
쥔장소개
Board
자유게시판
유용한 정보
자료실
Programming
강좌 & Articles
Spring 3.0
프로그래밍 Tip
   -ASP
   -PHP
   -JavaScript
   -HTML
   -Java/JSP
   -Database
   -Crystal Report
   -Visual Basic
   -이클립스
   -리눅스
   -기타
Windows API (VB)
Spread Sheet 7.0
컴퓨터활용 Tip
Other things
StarCraft 전략
StarCraft 문서
김용(金庸)
Son Q & Dieda

[C++ Study] Timer 사용

기타 조회 수 8529 추천 수 0 2004.06.29 12:29:52
뭉충닷컴 *.92.117.106
#include <stdio.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
        char temp[80];
        PAINTSTRUCT ps;
        HDC hdc;
        static int m_Count;
        switch(uMsg)
        {
        case WM_CREATE:
                m_Count = 10;
                SetTimer(hWnd,1,1000,NULL);
                break;
        case WM_PAINT:
                hdc = BeginPaint(hWnd, &ps);
                sprintf(temp, "Count Down : %2d", m_Count);

                TextOut(hdc, 300, 250, temp, strlen(temp));
                EndPaint(hWnd, &ps);
                break;
        case WM_TIMER:
                m_Count--;
                InvalidateRect(hWnd,NULL,TRUE);
                if(m_Count == 0)
                    DestroyWindow(hWnd);
                break;
        case WM_DESTROY:
                KillTimer(hWnd,1);
                PostQuitMessage(0);
                break;
        }
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

/*
  SetTimer함수의 ProtoType
  UINT SetTimer {
    HWND hWnd,              // handle of window for timer messages
    UINT nIDEvent,          // timer identifier
    UINT uElapse,           // timer-out value
    TIMERPROC lpTimerFunc   // address of timer procedure
  };

  SetTimer(hWnd,1,1000,NULL)
  hWnd창에 1 이란 타이머를 하나 생성하고 1초마다 마지막 파라미터의 함수를 호출한다.
  마지막 파라미터는 타이머를 처리할 함수 포인터로, WndProc와 별도의 다른 함수도 줄수 있으나
  보통 NULL로 처리하여 WndProc안에서 처리하도록한다.

  BOOL KillTimer {
    HWND hWnd,      // handle of window that installed timer
    UINT uIDevent   // timer identifier
  };

  Timer는 반드시 KillTimer로 destroy 시켜줘야한다.!
  KillTimer(hWnd,1); // 1은 위에서 사용했던 timer 식별자 번호
  


  Timer의 주기
    OS는 프로그래머가 설정한 주기대로 WM_TIMER Message를 윈도우의 Message Queue에 Post한다.
    (넣는다). 실제로  Queue에 다른 메시지가 많이 밀려있을 경우는 완전히 정확한 주기를 보장받지 못할
    수도있다. 우리는 1000ms 간격이라고 했을 때, 대력 1초 간격이라고 가정하고 처리하게 된다.
    (정확하게는 989ms)

  좀 더 정밀한 Timer
    Timer를 가지고 많은 프로그램을 하다 보면 , 대체로 20ms 이하의 간격은 별 차이를 느끼지 못하는데,
    일반적인 WM_TIMER방식의 한계 때문이다. 이는 WM_TIMER가 Message Queue에 Posting되고 다시
    Dispatch되는과정에 관계있기도하다. 좀 더 정밀한  Timer가 요구되는 경우 Multimedia Timer관련
    기능을 사용하거나 상용화된 전문적인 Real-Time Component를 이용하게된다.


  WM_DESTROY Message와 DestroyWindow(..)함수
    WM_DESTROY Message와 DestroyWindow(..)함수 호출을 혼돈하지 않도록하자, WM_DESTROY는
    "윈도우가 종료될 때" 라는 Message이고, DestroyWindow(hWnd);는 Do Destroy..즉, 핸들로
    주어진 Window를 "Destroy하라는 명령" 이다.
  */

댓글 '3'

mianssi

2004.08.10 12:36:41
*.221.102.97

대체 뭔말씀이신지 알아들을 수가 없슴다

뭉충닷컴

2004.08.12 08:46:38
*.154.244.227

앗싸 네가 올린글 또 하나 발견~!

서든홍아

2007.07.24 17:53:09
*.241.147.42

서든도 발견하세효~♡
문서 첨부 제한 : 0Byte/ 2.00MB
파일 크기 제한 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 기타 공부하는 곳 -_-; [2] 뭉충닷컴 2002-09-22 10642
31 토비의 스프링 뭉충닷컴 2011-03-28 3910
30 웹사이트 최적화 기법 file [1] 뭉충닷컴 2009-08-10 7146
29 기타 아파치 튜닝 [1] 뭉충닷컴 2009-08-03 7742
28 기타 아파치 설정 httpd.conf 뭉충닷컴 2009-08-03 5366
27 Intercepting Filter 패턴 뭉충닷컴 2009-06-17 7068
26 Core J2EE Pattern file 뭉충닷컴 2009-06-16 6547
» 기타 [C++ Study] Timer 사용 [3] 뭉충닷컴 2004-06-29 8529
24 기타 [C++ Study] Click Count, Toggle, Move String 뭉충닷컴 2004-06-29 7360
23 기타 [C++ Study] WinMain와 WinProc 뭉충닷컴 2004-06-28 8730
22 기타 C# Pattern - Simple Pattern 뭉충닷컴 2004-03-17 6235
21 기타 1. abex3 크랙 설명서 뭉충닷컴 2004-03-12 7003
20 기타 어셈 강좌 1, 2장 정리 뭉충닷컴 2004-03-12 7696
19 기타 SoftICE 4.05 설치 & 간단한 사용법 뭉충닷컴 2004-03-12 9114
18 기타 5. Overloading, Overriding, Runtime Type and 객체지향 뭉충닷컴 2003-12-02 6485
17 기타 4. Flow 통제와 예외 처리(Exception Handling) 뭉충닷컴 2003-11-05 6006
16 기타 3. 연산자와 지정 뭉충닷컴 2003-11-03 6624
15 기타 2. 선언과 엑서스 제어 뭉충닷컴 2003-11-03 5916
14 기타 1. 자바언어의 기본 뭉충닷컴 2003-11-03 5797
13 기타 Parameter 을 asp 처럼 사용하게 만든 class 뭉충닷컴 2003-11-03 6677