반응형
0. 목표
- 마우스 왼쪽 버튼을 누르면 디지털 타이머 시작, 또는 예외 메시지
- 마우스 오른쪽 버튼을 누르면 디지털 타이머 해제(메시지박스로 물어본 후)
timer의 on / off 체크용
boolean member variable(불리언 타입 멤버 변수) m_bTimerRun 을 선언한다.
(이건 당연히 view 클래스에)
1. 마우스 왼쪽 클릭 이벤트
- WM_LBUTTONDOWN
메시지 핸들러 함수에 코드 추가
// TODO: Add your message handler code here and/or call default
if(!m_bTimerRun)
{
SetTimer(0, 1000, NULL); // timer setting
m_bTimerRun = true; // timer performance true
}
else
{
AfxMessageBox("디지털 시계가 이미 동작중입니다.");
}
2. 마우스 오른쪽 클릭 이벤트
- WM_RBUTTONDOWN
메시지 핸들러 함수에 코드 추가
if(!m_bTimerRun)
{
AfxMessageBox("디지털 시계가 이미 동작 안함");
}
else
{
if(AfxMessageBox("정말로 시계 멈출겨?", MB_YESNO |
MB_ICONQUESTION) == IDYES)
{
KillTimer(0); // ID가 0인 타이머 해제
m_bTimerRun = false; // 타이머 동작 false
}
}
3. 타이머 메시지 이벤트
- WM_TIMER
메시지 핸들러 함수에 코드 추가
CClientDC dc(this); // 현재 클라이언트 영역 DC 얻음
CTime timer; // 타이머 변수 선언
timer = CTime::GetCurrentTime(); // 현재 시간을 얻음
CString strTimer; // 현재 시간을 출력할 문자열 변수
strTimer = timer.Format("현재시간 : %H시 %M분 %S초"); // 시간형식으로 문자열 생성
dc.TextOut(0, 0, strTimer); // 현재시간을 윈도우 좌표 0, 0에 출력
실행 결과
Mouse message, message handler function
메시지 유형 | 이벤트 | 메시지 핸들러 펑션 |
WM_MOUSEMOVE | 마우스 이동 | OnMouseMove() |
WM_LBUTTONDBCLK | 왼쪽 마우스 버튼 더블클릭 | OnLButtonBdlClk() |
WM_LBUTTONDOWN | 왼쪽 마우스 버튼 누름 | OnLButtonDown() |
WM_LBUTTONUP | 왼쪽 마우스 버튼 놓음 | OnLButtonUp() |
WM_RBUTTONDBCLK | 오른쪽 마우스 버튼 더블클릭 | OnLButtonBdlClk() |
WM_RBUTTONDOWN | 오른쪽 마우스 버튼 누름 | OnLButtonDown() |
WM_RBUTTONUP | 오른쪽 마우스 버튼 놓음 | OnLButtonUp() |
CTime 클래스, member function
함수 | 내용 |
GetTime | time_t값을 리턴(1970/1/1 0시~현재까지의 초값) |
GetYear | 연도를 리턴.(1970 - 2038) |
GetMonth | 월을 리턴.(1 - 12) |
GetDay | 일을 리턴.(1 - 31) |
GetHour | 시간을 리턴.(0 - 24) |
GetMinute | 분을 리턴.(0 - 59) |
GetSecond | 초를 리턴.(0 - 59) |
GetDayOfWeek | 요일을 리턴한다.(1-일, 2-월....) |
CTime timer; // 타이머 변수 선언
timer = CTime::GetCurrentTime(); // 현재 시간을 얻음
GetCurrentTime();
- 윈도우 시스템으로부터 윈도우 시스템의 현재 날짜와 시간을 얻어 CTime 객체를 생성
- 여기서 GetCurrentTime() 멤버 함수는
CTime 클래스의 정적 멤버 함수이므로 클래스 이름과 참조영역자(::)를 붙여 호출.
- 함수 원형 : static CTime PASCAL GetCurrentTime();
반응형
'C & C++ > MFC 컨트롤' 카테고리의 다른 글
[Dialog] 프로그램 최소화 원래대로... (0) | 2011.04.14 |
---|---|
[Tip] 실시간 ToolTip 바꾸기 (0) | 2011.04.14 |
[Dialog] 폼뷰 외곽 경계선 없애기 (0) | 2011.04.13 |
[Splitter] 분할 윈도우 (0) | 2011.04.13 |
[MFC] MFC 대화상자에서 초기화 및 종료 순서 (0) | 2011.04.13 |
댓글