• 검색 결과가 없습니다.

제3장시간/날짜프로그램날짜프로그램

N/A
N/A
Protected

Academic year: 2022

Share "제3장시간/날짜프로그램날짜프로그램"

Copied!
15
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

윈도우 프로그래밍 설계

청주대학교 융합전자공학부 전자공학전공 한철수

제3장 시간/날짜 프로그램

(2)

목차

2

• 시간/날짜 프로그램의 개요

• 시간/날짜 프로그램 작성 연습

(3)

CTime 클래스

3

• CTime 클래스는 시간과 날짜를 나타내는 클래스임.

• 주요 멤버 함수

‒ GetCurrentTime() // 현재시간을 저장함.(정적 멤버 함수)

• 사용 예

‒ CTime gct = CTime::GetCurrentTime(); // 현재 시간을 갖는 CTime형 변수를 만들어 gct에 저장함.

‒ GetYear() // 년을 가져옴.

• 사용 예

‒ gct.GetYear() // gct에 저장된 년을 반환함.

‒ GetMonth() // 월을 가져옴.

‒ GetDay() // 일을 가져옴.

‒ GetTime() // 시간을 가져옴.

‒ GetMinute() // 분을 가져옴.

‒ GetSecond() // 초를 가져옴.

‒ GetDayOfWeek() // 요일을 가져옴.

• 요일에 해당하는 숫자를 반환함.

‒ 1: 일, 2: 월, 3: 화, 4: 수, 5: 목, 6: 금, 7: 토

GetYear() 와 사용 방법이 동일함.

(4)

CRect 클래스

4

• CRect 클래스는 사각형 영역의 좌표값을 나타내는 클래스임.

‒ 멤버 변수

• top, left, bottom, right

‒ 멤버 함수

• Width()

‒ 폭을 반환함.

• Height()

‒ 높이를 반환함.

bottom

left right

top

CRect rect; // 변수 생성 rect.left = 0;

rect.top = 0;

rect.right = 200;

rect.bottom = 100;

(0, 0)

(200, 100) rect.Width() // 200을 반환함.

rect.Height() // 100을 반환함.

0 200

0

100

(5)

GetSystemMetrics 함수

5

• GetSystemMetrics()는 시스템 설정 값을 읽어오는 함수임.

‒ 모니터 화면의 크기 등 다양한 정보를 가져올 수 있음.

‒ 매개변수로 가져오고자 하는 값을 지정함.

• ::GetSystemMetrics(SM_CXSCREEN) // 모니터 화면의 폭을 반환함.

• ::GetSystemMetrics(SM_CYSCREEN) // 모니터 화면의 높이를 반환함.

CRect rect; // 변수 생성 rect.left = 0;

rect.top = 0;

rect.right = ::GetSystemMetrics(SM_CXSCREEN); // 화면 폭을 저장함.

rect.bottom = ::GetSystemMetrics(SM_CYSCREEN); // 화면 높이를 저장함.

(0, 0)

(화면 폭, 화면 높이)

(6)

GetWindowRect 함수

6

• GetWindowRect()는 화면상에서의 프로그램 창의 좌표 값을 읽어오는 함수임.

‒ 함수의 매개변수로 CRect 객체를 넣어 실행하면, 객체 안에 프로그램 창의 좌표 값을 저장해 줌.

CRect rect; // 변수 생성

GetWindowRect(rect); // 프로그램 창의 좌표 값을 변수에 저장해 줌.

• 퀴즈

rect.left = ? rect.top = ? rect.right = ? rect.bottom = ? rect.Width() = ? rect.Height() = ?

(0, 0)

(화면 폭, 화면 높이) 프로그램

창 (100, 50)

(300, 200)

(7)

RECT 구조체

7

• RECT 구조체는 사각형 영역의 좌표를 저장하기 위한 변수를 갖음.

‒ 변수

• top, left, bottom, right RECT rect; // 변수 생성 rect.left = 0;

rect.top = 0;

rect.right = 200;

rect.bottom = 100;

(0, 0)

(200, 100) bottom

left right

top

(8)

MoveWindow 함수

8

• MoveWindow 함수는 프로그램 창의 위치와 크기를 변경시 키는 함수임.

‒ MoveWindow(&winpos, TRUE);

• &winpos: 사각형 영역의 좌표 값을 갖는 변수의 주소 값.

• TRUE: 화면에 그림을 즉시 다시 그림.

RECT winpos; // 변수 생성

winpos.left = 100;

winpos.top = 100;

winpos.right = 200;

winpos.bottom = 200;

MoveWindow(&winpos, TRUE); // 실행 후, 창의 위치와 크기가 변경됨.

(0, 0)

(화면 폭, 화면 높이) 프로그램

창 (100, 50)

(300, 200)

실행 후

(0, 0)

(화면 폭, 화면 높이)

프로그램

(100, 100)

(200, 200)

(9)

시간/날짜 프로그램 작성

9

• 만들고자 하는 프로그램

‒ 오늘 날짜가 표시됨.

‒ 현재 시간이 표시됨.

타이머를 이용해 매초마다 현재 시각을 바꾸어 표시함.

Static Text

CStirng 클래스를 이용해 문자열을 변경함.

(10)

시간/날짜 프로그램 작성 (계속)

10

• 추가하고자 하는 기능

‒ 마우스 커서를 프로그램에 가져가면 프로그램이 마우스 커서를 피해 다른 위치로 도망치도록 함. (교재 83쪽부터)

• 실습의 핵심 포인트

‒ WM_SETCURSOR 메시지

• 마우스 커서가 프로그램 위에서 움직일 때 발생하는 메시지

(11)

11

(화면 폭, 화면 높이) 프로그램

(300, 200)

(screen.right, screen.bottom) (0, 0)

(100, 50)

hsize: 150 (창 높이)

(12)

12

프로그램 창

(300, 200)

(screen.right, screen.bottom) (100, 50)

(screen.right-vsize)

hsize (screen.bottom-hsize)

(숫자1 % 숫자2)의 결과는?  0~숫자2보다 1작은 수 중 하나

int x=rand() % (screen.right - vsize)  0~(screen.right - vsize-1) 중 하나 int y=rand() % (screen.bottom - hsize)  0~(screen.bottom - hsize-1) 중 하나

(0, 0)

(13)

프로그램 창

(300, 200)

(screen.right, screen.bottom) (100, 50)

(screen.right-vsize)

hsize (screen.bottom-hsize)

(0, 0)

13

왼쪽 꼭지점 (x, y)의 범위

(숫자1 % 숫자2)의 결과는?  0~숫자2보다 1작은 수 중 하나

int x=rand() % (screen.right - vsize)  0~(screen.right - vsize-1) 중 하나 int y=rand() % (screen.bottom - hsize)  0~(screen.bottom - hsize-1) 중 하나

(14)

(screen.right, screen.bottom) (100, 50)

(screen.right-vsize)

hsize (screen.bottom-hsize)

(0, 0)

왼쪽 꼭지점 (x, y)의 범위

14

winpos.left = x;

winpos.top = y;

winpos.right = x + vsize;

winpos.bottom = y + hsize;

winpos는 반드시 모니터 화면 안의 좌표 값을 갖게 됨.

(x+vsize, y+hsize)

winpos

(x, y)

(15)

질문

15

Q&A

참조

관련 문서

청주대학교 융합전자공학부 전자공학전공 한철수.. 제4장 C

특성이 서로 다른 두 마이크로폰을 이용하여 임 펄스응답을 측정하고 트랜스오럴 시스템을 구축할 경우, 청취자의 두 귀 입구에서 마이크로폰의 특성 차이와 반비례하는 소리의

• 사람, 시간, 날짜, 장소 등 특정한 의미를 가지고 있는 단 어를 인식하는 sequence labeling 문제. • ETRI의 엑소브레인

날짜 혈당 혈압 체중 치료약

[r]

효율적인 PDCA 관리 사이클에 대한 설명 내용으로 가장 관계가

제3장 가격변화에 대한 수요

제3장 수요와