38
3 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습 3-1 메시지 박스 생성하기 3.3 마우스 메시지 실습 3-2 디지털 시계 만들기 3.4 키보드 메시지 실습 3-3 문자를 입력하고 이동시키기

제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

제3장 메시지 처리

3.1 메시지 처리의 기본개념

3.2 메시지 박스

실습 3-1 메시지 박스 생성하기

3.3 마우스 메시지

실습 3-2 디지털 시계 만들기

3.4 키보드 메시지

실습 3-3 문자를 입력하고 이동시키기

Page 2: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

윈도우 프로그래밍

• 가장 중요한 것은 메시지를 처리하는 것

메시지

• 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값

메시지 처리의 기본 개념

Page 3: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

윈도우 메시지

컨트롤 통지 메시지

명령 메시지

메시지의 종류

Page 4: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

• 윈도우 메시지

• WM_로 시작하는 메시지 (WM_COMMAND는 제외)

•매개 변수가 있어 메시지를 어떻게 처리할 것인지를 결정

•윈도우 관리 메시지 : 윈도우의 상태가 바뀔 때 발생

•초기화 메시지 : 응용 프로그램이 메뉴나 대화상자를 구성할 때 발생

•입력 메시지 : 마우스, 키보드로 입력할 때 발생

메시지의 종류

Page 5: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

• 컨트롤 통지 메시지

• Button, Combo Box와 같은 제어 객체나 자식 윈도우에서 부모 윈도우로 보내는 메시지

• 명령 메시지

•메뉴, 툴바, 엑셀레이터 키와 같은 사용자 인터페이스 객체로부터 발생되는 WM_COMMAND 메시지

•명령메시지는 윈도우뿐만 아니라 도큐먼트, 도큐먼트 템플릿, 뷰, 다른 애플리케이션 객체에 의해서도 발생될 수 있다.

메시지의 종류(계속)

Page 6: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

Win32 SDK 프로그램 • 들어온 메시지를 switch문을 사용하여 처리

MFC 프로그램 • 메시지 처리를 위해 메시지 맵을 사용

메시지 맵(Message Map) • 메시지 번호와 메시지가 발생하였을 때 호출되는 함수의 포인터 등의 정보를 갖고 있는 테이블

• 프로그램에 전달된 메시지와 메시지 핸들러 함수를 연결하는데 사용

• 파생 클래스의 메시지 핸들러 함수가 우선

메시지 처리의 기본 개념

Page 7: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

메시지 처리 단계 1) 윈도우 클래스의 멤버 함수로 메시지 핸들러 함수를 선언한다

2)메시지 맵에 메시지와 메시지 핸들러 함수를 묶는 메시지의 매크로를 추가한다.

3)메시지 핸들러 함수의 기능을 구현한다.

클래스 마법사 • 위의 세 가지 단계에서 마지막 단계의 메시지 핸들러 함수의 본체만 사용자가 구현하도록 나머지는 자동으로 코딩을 해준다.

메시지 처리의 기본 개념

Page 8: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

• 윈도우로부터 애플리케이션에 메시지가 전달될 때 해당 메시지를 처리하는 멤버 함수

• 함수 이름

•윈도우 메시지의 WM_을 떼고 대신 On을 붙여 시작한다.

•함수 선언시 afx_msg는 메시지 핸들러 함수라는 것을 나타내는 말이다.

•예)

//{AFX_MSG(Practice3_1View)

afx_msg void OnKeyDown();

//}AFX_MSG

메시지 핸들러 함수

Page 9: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

윈도우 관리 메시지와 메시지 핸들러 함수

메시지 유형 발생 상황 메시지 핸들러 함수

WM_CREATE 윈도우가 생성될 때 OnCreate()

WM_ACTIVE 윈도우가 활성화 될 때 OnActive()

WM_PAINT 윈도우가 다시 그려질 때 OnPaint()

WM_SIZE 윈도우 크기가 변경될 때 OnSize()

WM_MOVE 윈도우가 움직일 때 OnMove()

WM_TIMER 설정된 타이머 시간이 됐을 때 OnTimer()

WM_DESTROY 윈도우가 종료될 때 OnDestroy()

Page 10: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

AfxMessageBox() 함수

• 사용자에게 간단한 메시지를 출력하는데 사용되는 대화상자

• 함수 원형

• Int AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0)

• lpszText : 출력하고자 하는 문자열

• nType : 대화상자에 설정되는 버튼

• nIDHelp : 현재 상태에서 F1키를 눌러 도움말을 실행하였을 때의 도움말 ID

• 디폴트 메시지 박스 스타일과 아이콘

• 메시지 박스 스타일 : MB_OK

• 아이콘 : MB_ICONEXCLAMATION

메시지 박스

Page 11: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

메시지 박스 스타일과 반환 값

메시지 박스

메시지 박스 스타일 사용 가능한 버튼 반환 값

MB_OK 확인 IDOK

MB_OKCANCEL 확인, 취소 IDOK, IDCANCEL

MB_YESNO 예, 아니오 IDYES, IDNO

MB_YESNOCANCEL 예, 아니오, 취소 IDYES, IDNO, IDCANCEL

MB_RETRYCANCEL 재시도, 취소 IDRETRY, IDCANCEL

MB_ABORTRETRYIGNORE 취소, 재시도, 무시 IDABORT,IDRETRY,IDIGNORE

Page 12: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

아이콘 스타일

메시지 박스

[위험] MB_ICONHAND 또는 MB_ICONSTOP

[정보] MB_ICONINFORMATION 또는 MB_ICONASTERISK

[물음] MB_ICONQUESTION [경고] MB_ICONEXCLAMATION

Page 13: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

클래스 마법사의 기능

• 명령 메시지 설정

• 메시지 매핑 설정

• 가상함수 설정

• 클래스에 멤버변수를 설정

• 메서드 설정

클래스 마법사(Class Wizard)

Page 14: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

클래스 마법사(Class Wizard)

메서드를 설정하는 탭

명령 메시지 매핑을

수행하는 탭

클래스에 멤버를 설정하고자 할 때 사용하는 탭

가상함수를 설정하는 탭

메시지 매핑을 수행하는 탭

Page 15: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

클래스 마법사(Class Wizard)

프로젝트에 설정되어 있는 클래스 리스트

새로운 클래스를 만들 때 사용

메시지 함수 리스트

클래스와 여러 객체

ID들

프로젝트명

선택된 함수로 이동하여 수정하고자 할 때 사용

선택한 함수를 지우고자 할 경우 사용

선택한 메시지에 대해 함수를 만들 때 사용

Page 16: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

WM_CREATE 메시지 핸들러 함수의 경우 ①프로젝트를 응용 프로그램 마법사로 ‘단일 문서’형태로 만든다

②[클래스 이름]항목에서 CPractice3_1View를 선택

③[메시지] 탭을 선택한 후 [메시지] 항목에서 WM_CREATE을 선택

④[처리기 추가] 버튼을 클릭하면 [기존 처리기]항목에 삽입된다.

⑤[코드 편집]버튼을 클릭하여 함수 본체로 이동하여 필요한 내용을 코딩한다.

메시지 핸들러 함수 만드는 방법

Page 17: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

실습 3-1 • 메시지 박스 생성하기

• 윈도우가 생성될 때 메시지를 출력

• 윈도우가 종료될 때 메시지를 출력

[윈도우가 생성될 때]

[윈도우가 종료될 때]

Page 18: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

프로그램 작성 순서 1)프로젝트를 생성한다.

• ‘단일 문서’ 형태로 생성

2)윈도우가 생성될 때 메시지 박스를 출력한다.

• WM_CREATE 에 대한 메시지 핸들러 함수 생성

3)윈도우가 종료될 때 메시지 박스를 출력한다.

• WM_DESTROY 에 대한 메시지 핸들러 함수 생성

4)프로그램을 실행한다.

실습 3-1

Page 19: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

마우스 메시지와 메시지 핸들러 함수

메시지 유형 발생 상황 메시지 핸들러 함수

WM_MOUSEMOVE 마우스를 이동 OnMouseMove()

WM_LBUTTONDBLCLK 왼쪽 마우스 버튼을 더블 클릭 OnLButtonDblclk()

WM_LBUTTONDOWN 왼쪽 마우스 버튼을 누름 OnLButtonDown()

WM_LBUTTONUP 왼쪽 마우스 버튼을 놓음 OnLButtonUp()

WM_RBUTTONDBCLK 오른쪽 마우스 버튼을 더블 클릭 OnRButtonDbclk()

WM_RBUTTONDOWN 오른쪽 마우스 버튼을 누름 OnRButtonDown()

WM_RBUTTONUP 오른쪽 마우스 버튼을 놓음 OnRButtonUp()

WM_MOUSEWHEEL 마우스 휠을 움직임 OnMouseWheel()

Page 20: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

• nFlags • MK_CONTROL : Ctrl 키가 눌림

• MK_LBUTTON : 왼쪽 마우스 버튼이 눌림

• MK_MBUTTON : 가운데 마우스 버튼이 눌림

• MK_RBUTTON : 오른쪽 마우스 버튼이 눌림

• MK_SHIFT : Shift 키가 눌림

• point • 클라이언트 영역 좌표 값으로 CPoint 클래스를 이용하여 제공된다.

마우스 메시지 핸들러 함수의 매개 변수

Page 21: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

• nFlags & MK_LBUTTON 의 값이 0 이 아니면 마우스 메시지와 함께 왼쪽 마우스 버튼이 눌려졌다는 의미 이다.

• 실습 2-2에서 nFlags의 사용

if((nFlags & MK_LBUTTON ) | (nFlags & MK_RBUTTON))

m_strOutText = "마우스를 드래그하고 있습니다.";

else

m_strOutText = "마우스를 이동하였습니다.";

메시지 핸들러 함수의 매개 변수 사용 예

Page 22: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

실습 3-2 디지털 시계 만들기 • 화면에 디지털 시계를 출력하는 프로그램을 작성하

는 것이다.

• 왼쪽 마우스 버튼을 누르면 시계가 동작한 다음 1초 간격으로 현재 시간을 출력

• 오른쪽 마우스 버튼을 누르면 시계가 멈춘다.

Page 23: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

1)‘단일 문서’ 기반의 프로젝트를 생성

2)타이머 동작을 체크하는 멤버 변수를 추가

3)윈도우가 생성될 때 타이머를 설정 • WM_CREATE 에 대한 메시지 핸들러 함수 생성

• 타이머 설정(SetTimer( ) 함수 사용)

4)타이머가 움직일 때 현재 시간을 출력 • 현재 시간을 저장할 멤버 변수를 추가

• WM_TIMER에 대한 메시지 핸들러 함수 생성

• OnDraw()함수를 통해 현재 시간을 출력

실습 3-2프로그램 작성 순서

Page 24: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

5)왼쪽 마우스를 눌렀을 때 시계가 동작 • WM_LBUTTONDOWN에 대한 메시지 핸들러 함수 생성

• SetTimer() 함수를 이용해 시계를 작동

6)오른쪽 마우스를 눌렀을 때 시계를 멈춤 • WM_RBUTTONDOWM에 대한 메시지 핸들러 함수 생성

• KillTimer()함수를 이용해 시계를 멈춤

7)윈도우를 종료할 때 타이머를 해제 • WM_DESTROY에대한 메시지 핸들러 함수 생성

• KillTimer()함수를 이용해 타이머를 해제

8)프로그램을 실행

실습 3-2 프로그램 작성 순서

Page 25: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

UINT SetTimer( UINT nIDEvent, UINT nElapse, TIMERPROC lpTimerFunc);

• nIDEvent : 타이머 ID

• nElapse : WM_TIMER 메시지를 발생시킬 시간 간격이다. 사용되는 단위는 1000분의 1초이다. 1초에 한번 메시지를 발생시키기 위해서는 1000으로 설정해주면 된다.

• lpTimerFunc : WM_TIMER 메시지가 발생되었을 때 실행되는 함수이다. NULL로 설정되면 OnTimer()함수가 호출된다

SetTimer() 함수

Page 26: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

• 이 함수는 Timer를 해제한다

• KillTimer() 함수의 인수는 SetTimer에서 설정된 Timer 의 ID이다.

KillTimer(int nIDEvent) 함수

Page 27: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

CTime 클래스

• 시간과 날짜를 표현하고, 저장하기 위한 클래스

• 주요 CTime 클래스의 멤버 함수

함 수 내 용

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-월요일,…)

Page 28: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

키보드 메시지와 메시지 핸들러 함수

키보드 메시지

메시지 유형 발생 상황 메시지 핸들러 함수

WM_KEYDOWN 키를 누름 OnKeyDown()

WM_KEYUP 키에서 손을 뗌 OnKeyUp()

WM_CHAR 화면에 문자가 표시되는 키를 누름

OnChar()

WM_SYSKEYDOWN 시스템 키를 누름 OnSysKeyDown()

WM_SYSKEYUP 시스템 키를 뗌 OnSysKeyUp()

WM_SYSCHAR 시스템 키와 문자 키를 같이 누름

OnSysChar()

Page 29: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

문자가 입력된 사건에 발생되는 메시지 • WM_KEYDOWN • WM_CHAR • WM_KEYUP

키보드 메시지 핸들러 함수의 매개 변수 • nChar : 눌려진 키의 가상키 코드이다.

• WM_CHAR 의 경우에는 눌려진 키의 문자 코드

• nRepCount : 키를 계속 누르고 있을 경우 반복된 키의 입력 횟수이다.

• nFlags : 스캔코드, 이전 키 상태, 키가 눌러질 때의 Alt 키의 상태에 관한 정보가 전달된다.

키보드 메시지

Page 30: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

실습 3-3문자를 입력하고 이동시키기 • 키보드를 이용하여 문자를 입력

• 키보드와 마우스를 이용하여 문자열을 이동시키는 프로그램을 작성

Page 31: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

• 오른쪽 마우스를 이용하여 문자열을 삭제시키는 프로그램을 작성

실습 3-3문자열 삭제하기

Page 32: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

1)‘단일 문서’ 기반의 프로젝트 생성

2)문자열에 관한 2개의 멤버 변수 추가

• 문자열 과 출력 위치를 저장하는 변수

3)문자를 입력할 때 문자열을 만든다.

• WM_CHAR에 대한 메시지 핸들러 함수를 생성

• 문자열 저장 변수에 입력된 문자를 추가

4)OnDraw()함수에서 문자열 출력

• TextOut() 함수를 이용하여 문자열 출력

실습 3-3프로그램 작성 순서

Page 33: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

5)키보드를 이용해 문자열을 이동

• WM_KEYDOWN에 대한 메시지 핸들러 함수 생성

• 문자열 위치 저장 변수의 값 변경

• 문자열이 윈도우 클라이언트 영역을 벗어날 경우 경고 메시지 출력

6)왼쪽 마우스 클릭으로 문자열을 이동

• WM_LBUTTONDOWN 메시지 핸들러 함수 생성

• 문자열 위치 저장 변수의 값을 현재 마우스 좌표 값으로 변경

실습 3-3

Page 34: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

7) 오른쪽 마우스 클릭으로 문자열을 삭제

• WM_RBUTTONDOWN 메시지 핸들러 함수 생성

• 문자열이 입력되어 있으면 문자열을 지우겠다는 메시지를 출력하고 문자열이 입력되어 있지 않으면 문자열을 입력하라는 메시지를 출력

8)프로그램을 실행

실습 3-3

Page 35: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

<실습 3-2>에서 작성한 프로그램에 다음의 기능을 추가하는 프로그램을 작성하라. • 왼쪽 마우스 버튼을 클릭하면 메시지 박스를 이용해 디지털 시계를 년, 월, 일, 시, 분, 초 형태로 시간을 표시하거나 간단히 시, 분, 초 형태로만 시간을 표시할 수 있게 한다. 단, 시, 분, 초 형태로 표시할 경우 시간은 24시간이 아닌 12시간으로 표시하고, 오전(AM), 오후(PM)를 구분한다.

• 오른쪽 마우스 버튼을 누르면 시계가 멈춘 상태면 동작시키겠다는 메시지를, 시계가 동작 중이면 시계를 멈추겠다는 메시지를 출력하도록 한다.

연습문제 3-1

Page 36: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

왼쪽 마우스의 기능

연습문제 3-1 실행 결과

Page 37: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

오른쪽 마우스의 기능

연습문제 3-1 실행 결과

[시계가 동작 중일 때]

[시계가 멈춘 상태일 때]

Page 38: 제3장 메시지 처리 - KOCWcontents.kocw.net/KOCW/document/2015/shinhan/parkweejoon/...제3장 메시지 처리 3.1 메시지 처리의 기본개념 3.2 메시지 박스 실습

<실습 3-3>에서 작성한 프로그램에 다음의 기능을 추가하는 프로그램을 작성하라. • 문자열을 왼쪽 마우스로 누른 채로 드래그하면 문자열이 따라오고 버튼을 떼었을 때 문자열이 그 자리에 출력할 수 있게 구현한다. 즉 Drag & Drop 기능을 구현한다.

연습문제 3-2