메시지 처리의 기본 개념 메시지 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값 윈도우 프로그래밍 가장 중요한 것은 메시지를 처리하는 것 윈도우 시스템 Application 이벤트 발생 메시지 전송 메시지 처리 화면에 출력.

Slides:



Advertisements
Similar presentations
I am Computer I am Computer 7 장 응용 소프트웨어 7.1 응용 프로그램이란 ? 7.2 워드프로세서 7.3 프리젠테이션 7.4 스프레드시트 7.5 데이터베이스.
Advertisements

Timer Department of Digital Contents Sang Il Park.
Keyboard Input. Announcement 휴강공고 : –4 월 12 일 ( 월요일 ) 수업 없음 – 보강일정 : 차후 공고 예정.
Computer Graphics 1 윈도우 프로그래밍 실습 II 김 창 헌김 창 헌.
- 1 - 파워포인트 (Power Point)  파워포인트 개요 >> 파워포인트로 작성 가능한 문서 브리핑 문서 / 학술회의 문서.
Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌. Computer Graphics 2 윈도우 시스템  윈도우  스크린 위에서 독립적으로 움직일 수 있는 사각형 영역  윈도우 시스템  유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를.
Message Process for SDI Chung-Buk HRD Institute of KCCI Dept. of Information & Communication PhD. Kang, Won-Chan.
CH1 개발 효율이 높은 프로그램 구조
컴퓨터 공학 설계 및 실험 I MFC programming
Department of Digital Contents Sang Il Park
“할배들의 수다” 전통시장 최고의 집을 찾아라
2장. 윈도우즈 입출력 1/211 1.
7장. MDI 프로그래밍 MDI 프로그래밍에 대한 내용을 배우도록 한다. 지금까지 배운 것은 생성된 윈도우에 단일 화면이 존재하는 형태였다. 이것을 SDI라고 부르고 Single Document Interface의 약자이다. 하나의 문서를 하나의 화면에 보여주는 형태의.
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
Windows Programming Chapter 1. Introduction to SDK
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다.
MFC Application Frameworks (AFX)
Lecture 2 MFC and Application Frameworks
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
제1장 윈도우 프로그래밍 1.1 윈도우 프로그래밍의 개념 1.2 윈도우 프로그램의 기본 구조
MFC의 메시지 처리.
Visual C++ Programming Document/View Architecture 3
5장. 단축키와 비트맵 윈도우 프로그램에는 화면에서 사용자들의 입력을 받아 들이고 출력을 위한 코드 외 부분이 존재한다. 이 부분을 주로 리소스라고 부르고 이들은 주로 화면에 나타난다. 메뉴, 툴바, 비트맵, 단축키, 대화상자 등이 여기에 속한다. 이 부분들은 우리의 프로그램의.
제 1 장 영상처리 기초.
컴퓨터 계측 및 실습 스테핑 모터 영남대학교 기계공학부.
다이얼로그 박스와 컨트롤 컴퓨터 계측 및 실습.
컴포넌트 (Component)
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
MFC 발전 과정과 주요 특징을 개괄적으로 이해한다.
윤 홍 란 MFC 기초 윤 홍 란
Lab 2 Guide: 교재 3장 그래픽 예제 ( 쪽) - 펜과 브러시로 그리기 - 튀는 공
태양계 시뮬레이션 팀 명: 복학생 강유진 박지혜.
ActiveX 개발 KnowHow (C++ Builder 6.0)
컴퓨터 계측 및 실습 스테핑 모터 영남대학교 기계공학부.
6장 히스토그램 처리 차 례 히스토그램의 개요 히스토그램의 용도 영상 이치화 히스토그램 평활화 히스토그램 스트레칭
Window socket programming
MFC Application Frameworks (AFX)
MFC 프로그래밍에 관한 팁 / Keyboard / Timer
MFC 프로그래밍에 관한 팁 / Keyboard
Visual C++ Programming
Visual C++ Programming Keyboard & Timer
마우스 메시지 처리 기법을 익힌다. 키보드 메시지 처리 기법을 익힌다..
Visual C++ Programming Output and File
Visual C++ Programming Common Controls
5장. 마우스와 키보드.
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
날짜: 팀명: TEAM-SIX 발표자: 이기영
Maxcampus [Ctrl] , [Shift] 키 기능 [Ctrl] 키 [Shift] 키 ① 첫 클릭 지점에서 그리기
제주닷컴 매뉴얼 (실시간 예약시스템) 2013년 10월.
컴퓨터 계측 및 실습 A/D-converter 하중센서
시스템 접속환경 설정 인터넷 옵션 설정 익스플로러 상단 메뉴 에서 을 클릭하고, 아래 순서대로 설정합니다. 1. 탭에서 을 클릭하여 “페이지 열 때마다”를 체크하고 합니다. 2. 탭을 선택하고 하단의 에.
' Strategic Alliance Partner with '
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
계산제어.
4장 - PHP의 표현식과 흐름 제어-.
Lab 9 Guide: 인터넷 프로그래밍 예제 * 일대일 채팅 프로그램 (교재 27장, 쪽)
작성일 참고서적 – Programing Game AI by Example
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
내장형 소프트웨어 -페인트 보드 만들기 발표자 : 백종인.
3장. 제어 메시지 처리하기 1/211 1.
제 7장 이벤트.
C# 10장. 참조형.
2015년 2학년 1반.
04장 ㅎㅎ 화소점 처리 화소 점 처리의 개념 디지털 영상의 산술연산과 논리연산 디지털 영상의 다양한 화소 점 처리 기법
문서의 작성 정보과학부 이지연.
비행 슈팅 액션 레이싱게임 기획서 웹운영과 전지훈.
제안 제도 운영방안.
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
MFC 응용 프로그램 구조 두 개의 윈도우로 구성된 일반적인 MFC 프로그램 프레임 윈도우
제 4장 Visual C++ COM 컴파일러.
Presentation transcript:

메시지 처리의 기본 개념 메시지 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값 윈도우 프로그래밍 가장 중요한 것은 메시지를 처리하는 것 윈도우 시스템 Application 이벤트 발생 메시지 전송 메시지 처리 화면에 출력

메시지 처리의 기본 개념 메시지의 종류 윈도우 메시지 WM_ 로 시작하는 메시지 (WM_COMMAND 는 제외 ) 매개 변수가 있어 메시지를 어떻게 처리할 것인지를 결정 윈도우 관리 메시지 : 윈도우의 상태가 바뀔 때 발생 초기화 메시지 : 응용 프로그램이 메뉴나 대화상자를 구성 할 때 발생 입력 메시지 : 마우스, 키보드로 입력할 때 발생

메시지 처리의 기본 개념 메시지의 종류 컨트롤 통지 메시지 Button, Combo Box 와 같은 제어 객체나 자식 윈도우에서 부모 윈도우로 보내는 메시지 명령 메시지 메뉴, 툴바, 엑셀레이터 키와 같은 사용자 인터페이스 객체 로부터 발생되는 WM_COMMAND 메시지 명령메시지는 윈도우뿐만 아니라 도큐먼트, 도큐먼트 템 플릿, 뷰, 다른 애플리케이션 객체에 의해서도 발생될 수 있다.

메시지 처리의 기본 개념 SDK 프로그램 들어온 메시지를 switch 문을 사용하여 처리 MFC 프로그램 메시지 처리를 위해 메시지 맵을 사용 메시지 맵 메시지 번호와 메시지가 발생하였을 때 호출되는 함수 의 포인터 등의 정보를 갖고 있는 테이블 프로그램에 전달된 메시지와 메시지 핸들러 함수를 연 결하는데 사용 파생 클래스의 메시지 핸들러 함수가 우선

메시지 처리의 기본 개념 메시지 처리 단계 윈도우 클래스의 멤버 함수로 메시지 핸들러 함수 를 선언한다 메시지 맵에 메시지와 메시지 핸들러 함수를 묶는 메시지의 매크로를 추가한다. 메시지 핸들러 함수의 기능을 구현한다. 클래스 위저드 위의 세 가지 단계에서 마지막 단계의 메시지 핸들 러 함수의 본체만 사용자가 구현하도록 나머지는 자동으로 코딩을 해준다.

메시지 처리의 기본 개념 메시지 핸들러 함수 윈도우로부터 애플리케이션에 메시지가 전달될 때 해당 메시지를 처리하는 멤버 함수 함수 이름 윈도우 메시지의 WM_ 을 떼고 대신 On 을 붙여 시작한다. 함수 선언시 afx_msg 는 메시지 핸들러 함수라는 것을 나 타내는 말이다. 예 //{AFX_MSG(Practice2_1View) Afx_msg void OnKeyDown(); … //}AFX_MSG

메시지 처리의 기본 개념 윈도우 관리 메시지와 메시지 핸들러 함수 메시지 유형발생 상황메시지 핸들러 함수 WM_CREATE 윈도우가 생성될 때 OnCreate() WM_ACTIVE 윈도우가 활성화 될 때 OnActive() WM_PAINT 윈도우가 다시 그려질 때 OnPaint() WM_SIZE 윈도우 크기가 변경될 때 OnSize() WM_MOVE 윈도가 움직일 때 OnMove() WM_TIMER 설정된 타이머 시간이 됐을 때 OnTimer() WM_DESTRO Y 윈도우가 종료될 때 OnDestroy()

메시지 박스 AfxMessageBox() 함수 사용자에게 간단한 메시지를 출력하는데 사용되는 대화상자 함수 원형 Int AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0) lpszText : 출력하고자 하는 문자열 nType : 대화상자에 설정되는 버튼 nIDHelp : 현재 상태에서 F1 키를 눌러 도움말을 실행하였을 때의 도움말 ID 디폴트 메시지 박스 스타일과 아이콘 메시지 박스 : MB_OK 아이콘 : MB_ICONEXCLAMATION

메시지 박스 메시지 박스 스타일과 반환 값 메시지 박스 스타일사용 가능한 버튼반환 값 MB_OK 확인 IDOK MB_OKCANCEL 확인, 취소 IDOK,IDCANCEL MB_YESNO 예, 아니오 IDYES,IDNO MB_YESNOCANCEL 예, 아니오, 취소 IDYES,IDNO, IDCANCEL MB_RETRYCANCEL 재시도, 취소 IDRETRY,IDCANCEL MB_ABORTRETRYIGNOR E 취소, 재시도, 무시 IDABORT,IDRETRY,IDIGNOR E

메시지 박스 아이콘 스타일 [ 위험 ] MB_ICONHAND 또는 MB_ICONSTOP [ 정보 ] MB_ICONINFORMATION 또는 MB_ICONASTERISK [ 물음 ] MB_ICONQUESTION[ 경고 ] MB_ICONEXCLAMATION

클래스 위저드 (ClassWizard) 클래스 위저드의 기능 메시지 매핑 기능 클래스에 멤버를 설정 OLE Automation 설정 Active X Event 설정 클래스 정보 설정

클래스 위저드 (ClassWizard) 메시지 패핑을 수행하는 탭 메시지 패핑을 수행하는 탭 클래스에 멤버를 설정하고자 할 때 사용하는 탭 클래스에 멤버를 설정하고자 할 때 사용하는 탭 ActiveX Event 설정하는 탭 ActiveX Event 설정하는 탭 OLE Automation 설정하는 탭 OLE Automation 설정하는 탭 클래스 정보 설정하는 텝 클래스 정보 설정하는 텝

클래스 위저드 (ClassWizard) 프로젝트에 설정되어 있는 클래스 리스트 새로운 클래스를 만들 때 사용 새로운 클래스를 만들 때 사용 메시지 함수 리스트 클래스와 여러 객체 ID 들 클래스와 여러 객체 ID 들 프로젝트명 선택된 함수로 이동하여 수정하고자 할 때 사용 선택된 함수로 이동하여 수정하고자 할 때 사용 선택한 함수를 지우고자 할 경우 사용 선택한 함수를 지우고자 할 경우 사용 선택한 메시지에 대해 함수를 만들 때 사용 선택한 메시지에 대해 함수를 만들 때 사용

클래스 위저드 (ClassWizard) Practice3-1 프로젝트를 AppWizard 로 SDI 형태로 만든다 Class name 항목에서 CPractice3_1View 를 선택 Object Ids 항목에서 CPractice3_1View 를 선택 Messages 항목에서 WM_SIZE 을 선택 Add function 버튼을 클릭하면 Member function 항목에 “ OnSize ON_WM_SIZE ” 이 삽입 된다. 윈도우의 크기를 변경하였을 때 메시지 처리 함수 만들기

클래스 위저드 (ClassWizard) Edit Code 항목을 클릭하면 CPractice3-1View.cpp 파일을 열고 수정할 위치에 커서를 위 치시킨다. 그 위치에 원하는 코딩을 한다.

실습 3-1 메시지 박스를 이용하여 윈도우 크기 출력하기 이 실습은 윈도우가 생성될 때 메시지를 출력하고, 윈 도우 크기를 바꾸었을 때 윈도우 크기를 출력하고, 윈 도우가 종료될 때 메시지를 출력하는 프로그램이다.

마우스 메시지 마우스 메시지와 메시지 핸들러 함수 메시지 유형발생 상황메시지 핸들러 함수 WM_MOUSEMOVE 마우스를 이동 OnMouseMove() WM_LBUTTONDBCLK 왼쪽 마우스 버튼을 더블 클릭 OnLButtonDbclk() WM_LBUTTONDOWN 왼쪽 마우스 버튼을 누름 OnLButtonDown() WM_LBUTTONUP 왼쪽 마우스 버튼을 놓음 OnLButtonUp() WM_RBUTTONDBCL K 오른쪽 마우스 버튼을 더블 클릭 OnRButtonDbclk() WM_RBUTTONDOWN 오른쪽 마우스 버튼을 누름 OnRButtonDown() WM_RBUTTONUP 오른쪽 마우스 버튼을 놓음 OnRButtonUp()

마우스 메시지 마우스 메시지 핸들러 함수의 매개 변수 nFlags 버튼이 눌리면서 키보드에서 특정한 키가 눌려졌을 때의 값이나 마우스의 눌림 값 MK_CONTROL : Ctrl 키가 눌림 MK_LBUTTON : 왼쪽 마우스 버튼이 눌림 MK_MBUTTON : 가운데 마우스 버튼이 눌림 MK_RBUTTON : 오른쪽 마우스 버튼이 눌림 MK_SHIFT : Shift 키가 눌림 point 클라이언트 영역 좌표 값으로 CPoint 클래스를 이용하여 제공된 다.

마우스 메시지 메시지 핸들러 함수의 매개 변수 사용 예 nFlags & MK_LBUTTON 의 값이 0 이 아니면 마우 스 메시지와 함께 왼쪽 마우스 버튼이 눌려졌다는 의미 이다. 연습 문제 2-1 에서 nFlags 의 사용 if((nFlags & MK_LBUTTON )| (nFlags & MK_RBUTTON)) m_strOutText = " 마우스를 드래그하고 있습니다."; else m_strOutText = " 마우스를 이동하였습니다.";

실습 3-2 디지털 시계 만들기 이번 실습은 화면에 디지털 시계를 출력하는 프로 그램을 작성하는 것이다. 왼쪽 마우스 버튼을 누르 면 시계가 동작한 다음 1 초 간격으로 현재 시간을 출력하고 오른쪽 마우스 버튼을 누르면 시계가 멈 춘다.

실습 3-2 SetTimer() 함수 UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) ); nIDEvent : 타이머 ID nElapse : WM_TIMER 메시지를 발생시킬 시간 간격이다. 사용되는 단위는 1000 분의 초이다. 1 초에 한번 메시지를 발 생시키기 위해서는 1000 으로 설정해주면 된다. lpfnTimer() : 설정된 시간 마다 호출되는 함수명이다. NULL 로 설정되면 OnTimer() 함수가 호출된다

실습 3-2 KillTimer() 함수 이 함수는 Timer 를 해제한다 KillTimer() 함수의 인수는 SetTimer 에서 설정된 Timer 의 ID 이다.

키보드 메시지 키보드 메시지와 메시지 핸들러 함수 문자가 입력된 사건에 발생되는 메시지 먼저 WM_KEYDOWN 이 발생되고 WM_CHAR 가 발생되고 마지막으로 WM_KEYUP 이 발생된다. 메시지 유형발생 상황메시지 핸들러 함수 WM_KEYDOW N 키를 누름 OnKeyDown() WM_KEYUP 키에서 손을 뗌 OnKeyUp() WM_CHAR 화면에 문자가 표시 되는 키를 누름 OnKeyChar()

키보드 메시지 키보드 메시지 핸들러 함수의 매개 변수 nChar : 눌려진 키의 가상키 코드이다. WM_CHAR 의 경우에는 눌려진 키의 문자 코드 nRepCount : 키를 계속 누르고 있을 경우 반복된 키의 입력 횟수이다. nFlags : 스캔코드, 이전 키 상태, 키가 눌러질 때의 Alt 키의 상태에 관한 정보가 전달된다.

실습 3-3 문자를 입력하고 이동시키기 이 실습은 키보드를 이용하여 문자를 입력하고 키 보드를 이용하여 문자열을 이동시키는 프로그램을 작성하는 것이다.

실습 3-3 Invalidate() 함수 여기서 키보드를 이용해 문자를 계속 입력하면 문자들이 연결 되어 멤버 변수 m_strOutText 에 저장된다. 그리고 문자를 입 력 시마다 화면을 다시 갱신해야 한다. Invalidate() 함수는 강 제로 WM_PAINT 메시지를 발생시키고, WM_PAINT 메시지 는 OnDraw() 함수를 호출해서 화면을 다시 그리는 역할을 한 다. Invalidate(TRUE) 는 윈도우의 작업 영역을 전부 지운 후 다시 그리고, Invalidate(FALSE) 함수는 그 반대이다. 디폴트 인자로는 TRUE 로 되어 있어 문자 입력 시마다 화면이 깜빡 거리게 되므로 여기서는 인수를 FALSE 로 설정한다.

연습문제 3-1 윈도우 가운데 현재 시간 출력하기 윈도우를 생성하면 (WM_CREATE) 시계가 동작하 고, 1 초 간격으로 현재 시간을 출력하고, 윈도우를 종료하면 (WM_DESTORY) 시계가 멈춘다. 또한 오 른쪽 마우스 버튼을 누르면 시계가 멈추고, 왼쪽 마 우스 버튼을 누르면 시계가 동작하도록 한다. CTime 클래스의 멤버함수 (GetYear(), GetMonth(), GetDay(), GetHour(), GetMinute(), GetSecond()) 를 이용하여 다음 그림과 같이 출력해보자.

연습문제 3-1 실행 화면

연습문제 3-2 문자열을 입력하고 키보드와 마우스를 통해 이동시키는 프로젝트를 작성하라. 에서 했던 것처럼 키보드를 통해 문자열 을 입력하고, 키보드를 이용하여 문자열을 이동시 키자. 왼쪽 마우스 버튼을 클릭하면 클릭한 위치에 문자열을 출력하도록 하자. 즉 문자열을 키보드와 마우스로 이동 가능하게 만드는 것이다.

연습문제 3-2 문자열이 아래쪽이나 오른쪽으로 더 이상 이동할 수 없을 때 메시지 박스를 이용하여 경고 메시지 ( ) 를 출력하게 하자. 오른쪽 마우스 버튼을 클릭하면 현재 문자열 출력 위 치를 정보 메시지 ( ) 박스에 출력하도록 하자.