MFC 프로그래밍에 관한 팁 / Keyboard

Slides:



Advertisements
Similar presentations
3 학년 -54 명 4 학년 -53 명 3.4 학년 총인원 -107 명 교사 -21 명 초 등 부 총인원 -128 명 2008 년 1 월 인원보고.
Advertisements

학습목표 Part 2. 본격 파이썬 입문 7 장. 2 부 요점 정리. RUNNING HEADER, 14 PT., ALL CAPS, Line Spacing=1 line 7.1 더 들여다보기  파이썬 정보 ( 영어 )  파이썬 공식 문서 :
I am Computer I am Computer 7 장 응용 소프트웨어 7.1 응용 프로그램이란 ? 7.2 워드프로세서 7.3 프리젠테이션 7.4 스프레드시트 7.5 데이터베이스.
Keyboard Input. Announcement 휴강공고 : –4 월 12 일 ( 월요일 ) 수업 없음 – 보강일정 : 차후 공고 예정.
Lynx, Opera, and Other Browsers 인공지능연구실. Contents Lynx (Text 기반의 Browser) 역사 및 특징 사용법 및 기능 Opera (Small Browser) 역사 및 특징 사용법 및 기능 과 뉴스 그룹 사용법 Other.
- 1 - 파워포인트 (Power Point)  파워포인트 개요 >> 파워포인트로 작성 가능한 문서 브리핑 문서 / 학술회의 문서.
메시지 처리의 기본 개념 메시지 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값 윈도우 프로그래밍 가장 중요한 것은 메시지를 처리하는 것 윈도우 시스템 Application 이벤트 발생 메시지 전송 메시지 처리 화면에 출력.
1 과제물 6 호 설명자료 제출마감 : 2012 년 12 월 3 일 ( 월 ) 24 시 이병완교수의 화폐금융론 2012.
Message Process for SDI Chung-Buk HRD Institute of KCCI Dept. of Information & Communication PhD. Kang, Won-Chan.
CH5 디버그를 해보자 디버그 디버거 : 실행중인 응용 프로그램을 지정한 장소에서 정지하고, 그 시 점에서 변수, 메모리, 콜 스택의 내용을 참조하는것이 가능 Build -> Start Debug -> Go.
강의 내용 : DirectX 개요 DirectX 9 을 이용한 시각화. 목 차 DirectX 출현 배경 DirectX 현재 버전 DirectX 장점 DirectX 구성요소 DirectX SDK 다운로드 및 설치 DirectX SDK 폴더 구성 및 역할 샘플 코드 브라우저.
컴퓨터 공학 설계 및 실험 I MFC programming
Department of Digital Contents Sang Il Park
2008 사회통계조사 통 계 청 사회복지통계과.
2장. 윈도우즈 입출력 1/211 1.
메모장 다루기 A. 메모장 실행법 시작>모든 프로그램> 보조 프로그램>메모장 Notepad
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
Visual C++ Programming
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
Multimedia Programming 05: Point Processing
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다.
Lecture 2 MFC and Application Frameworks
Visual C++ Programming Document/View Architecture 3
고해상도 잉크제트 프린터 사용자 매뉴얼 베스트마킹 Best Marking
MFC 발전 과정과 주요 특징을 개괄적으로 이해한다.
윤 홍 란 MFC 기초 윤 홍 란
강사 : 이준근 Win32 API 강사 : 이준근
정보처리개론 Ⅲ. 윈도우 XP.
태양계 시뮬레이션 팀 명: 복학생 강유진 박지혜.
Game Programming 03 - Tools of trade
엑셀, 준비 운동.
MFC 프로그래밍에 관한 팁 / Keyboard / Timer
Visual C++ Programming Keyboard & Timer
마우스 메시지 처리 기법을 익힌다. 키보드 메시지 처리 기법을 익힌다..
Visual C++ Programming Output and File
Visual C++ Programming Common Controls
5장. 마우스와 키보드.
누구나 즐기는 C언어 콘서트 제2장 기초 사항.
프리젠테이션 활용 및 데이터활용 Chapter 1 엑셀의 개요 김 정 석
워드프로세서 필기 (구 1급) 6일차 강 사 : 박영민.
Maxcampus [Ctrl] , [Shift] 키 기능 [Ctrl] 키 [Shift] 키 ① 첫 클릭 지점에서 그리기
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
악보 전문 제작은 Finale에게 맡겨라!.
컴퓨터 : 지적 도구 PARSONS/OJA 컴퓨터 사용하기: 기본개념 Page 1 1.
밥을 이용한 음식의 종류 실과 6학년 3. 간단한 음식 만들기> 1) 밥을 이용한 음식 만들기 (1/10)
동물의 특징을 음악적 요소로 표현 하기 음악 3학년 2학기 20. 동물의 사육제(1 / 2) 수업계획 수업활동 [제작 의도]
제 3 장 연산자 (Operators).
Appendix A 구조적 시스템 개발 방법론.
계산제어.
한글 2010.
엑셀 개요(Excel Introduction) 2 – 셀 선택, 데이터 입력, 셀 편집, 셀 서식
Vim editor (1/4) 김선영 버 전: 버 전: 인사이트 출판사 가메출판사 저자홈페이지.
Lab 9 Guide: 인터넷 프로그래밍 예제 * 일대일 채팅 프로그램 (교재 27장, 쪽)
서강지역 파워포인트교육 지역주민과 함께하는 교육.
파워포인트 2003.
컴퓨터활용능력1급필기 06 PC 운영체제(2) Windows 탐색기 제어판 인쇄.
파워포인트 단축키 모음 범주 명령/기능 단축키 오피스 공통 단축키 파일 열기 Ctrl + O O 열려진 창들 간의 전환
목차 워드 화면구성 1 2 텍스트입력/ 특수기호/ 글꼴 서식
3장. 제어 메시지 처리하기 1/211 1.
Chapter 12. 도형과 스마트아트 슬라이드 만들기
컴퓨터 및 정보통신 - PPT 보충자료 - 건국대 경영대학 박성식
Excel 일차 강사 : 박영민.
문서의 작성 정보과학부 이지연.
비행 슈팅 액션 레이싱게임 기획서 웹운영과 전지훈.
미래 핵심역량기반의 교육과정 편성 전 건 용 보령교육지원청 장학사 (중급) 도형에 색을 다시 칠한 그림(캡션 포함)
국어지도 유아교육과 권수연 김아람 중등특수교육과 박수진 양한솔
2장 내 슬라이드 처음 만들기 실용컴퓨터 파워포인트.
실시간 음성 채팅 서비스 (Voice Chatting Programe)
MFC 응용 프로그램 구조 두 개의 윈도우로 구성된 일반적인 MFC 프로그램 프레임 윈도우
MFC 기초 윈도우 응용프로그램 개발 간략한 역사 Microsoft Foundation Classes
Presentation transcript:

MFC 프로그래밍에 관한 팁 / Keyboard Department of Digital Contents Sang Il Park

Review: 마우스 메시지 클라이언트 영역 마우스 메시지 메시지 WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK WM_MOUSEMOVE 발생 시점 왼쪽 버튼을 누를 때 왼쪽 버튼을 뗄 때 왼쪽 버튼을 더블 클릭할 때 가운데 버튼을 누를 때 가운데 버튼을 뗄 때 가운데 버튼을 더블 클릭할 때 오른쪽 버튼을 누를 때 오른쪽 버튼을 뗄 때 오른쪽 버튼을 더블 클릭할 때 마우스를 움직일 때

Review: 메시지 발생 과정 마우스를 움직일 때 왼쪽 버튼 클릭 왼쪽 버튼 클릭 + 드래그 왼쪽 버튼 더블 클릭 WM_MOUSEMOVE WM_LBUTTONDOWN WM_LBUTTONDOWN WM_LBUTTONDOWN WM_MOUSEMOVE WM_LBUTTONUP WM_MOUSEMOVE WM_LBUTTONUP WM_MOUSEMOVE WM_MOUSEMOVE WM_LBUTTONDBLCLK WM_MOUSEMOVE WM_MOUSEMOVE WM_LBUTTONUP WM_MOUSEMOVE WM_LBUTTONUP

Review: 윈도우 메시지 핸들러 추가법 CChildView의 Properties 창에서 추가할 수 있다

Review: 메시지 핸들러 형태 메시지 핸들러 형태 nFlags 메시지가 생성될 때의 키보드나 마우스 버튼의 상태를 나타내는 비트 매스크 afx_msg void On##### (UINT nFlags, CPoint point) ; 비트 매스크 의미 MK_CONTROL Ctrl 키가 눌렸을 때 MK_SHIFT Shift 키가 눌렸을 때 MK_LBUTTON 마우스 왼쪽 버튼이 눌렸을 때 MK_MBUTTON 마우스 가운데 버튼이 눌렸을 때 MK_RBUTTON 마우스 오른쪽 버튼이 눌렸을 때

Review: 메시지 핸들러 형태 메시지 핸들러 형태 point 메시지가 생성될 때의 마우스 커서 위치(클라이언트 좌표) afx_msg void On##### (UINT nFlags, CPoint point) ; void CChildView::OnLButtonDown(UINT nFlags, CPoint point) { CClientDC dc(this); CPoint pt = point; dc.Rectangle(pt.x-100, pt.y+100, pt.x+100, pt.y-100); CWnd ::OnLButtonDown(nFlags, point); }

연습: line 긋는 프로그램 화면에 마우스를 이용하여 line을 긋는다. Line 을 그리기 위해서는 시작점, 끝점을 기억한다. 마우스 버튼 Down 시 시작점을 입력 마우스 버튼 Up 시 끝점을 입력 Line 긋기

연습: line 긋는 프로그램2 화면에 마우스를 이용하여 line을 긋는다. 마우스가 움직일 때 중간 과정을 보여준다 시작점, 끝점을 기억한다. 마우스 버튼 Down 시 시작점을 입력 마우스 Move 시 끝점을 입력 Line 긋기 마우스 버튼 Up 시

문제점? 마우스가 밖으로 나가 버리면???

마우스 캡쳐 용도 관련 함수 마우스 캡처를 하면 마우스 커서의 위치에 관계없이 마우스 메시지를 받을 수 있다. API 함수 MFC 함수 의미 SetCapture() CWnd::SetCapture() 마우스 캡처를 시작한다. ReleaseCapture() 없음 마우스 캡처를 해제한다. GetCapture() CWnd::GetCapture() 어느 윈도우가 현재 마우스 캡처를 하고 있는지 알아낸다.

비 클라이언트 영역 마우스 메시지 (1/4) 비 클라이언트 영역 마우스 메시지 메시지 발생 시점 WM_NCLBUTTONDOWN 왼쪽 버튼을 누를 때 WM_NCLBUTTONUP 왼쪽 버튼을 뗄 때 WM_NCLBUTTONDBLCLK 왼쪽 버튼을 더블 클릭할 때 WM_NCMBUTTONDOWN 가운데 버튼을 누를 때 WM_NCMBUTTONUP 가운데 버튼을 뗄 때 WM_NCMBUTTONDBLCLK 가운데 버튼을 더블 클릭할 때 WM_NCRBUTTONDOWN 오른쪽 버튼을 누를 때 WM_NCRBUTTONUP 오른쪽 버튼을 뗄 때 WM_NCRBUTTONDBLCLK 오른쪽 버튼을 더블 클릭할 때 WM_NCMOUSEMOVE 마우스를 움직일 때

비 클라이언트 영역 마우스 메시지 (2/4) 비 클라이언트 영역 마우스 메시지 핸들러 메시지 메시지맵 매크로 메시지 핸들러 WM_NCLBUTTONDOWN ON_WM_NCLBUTTONDOWN() OnNcLButtonDown WM_NCLBUTTONUP ON_WM_NCLBUTTONUP() OnNcLButtonUp WM_NCLBUTTONDBLCLK ON_WM_NCLBUTTONDBLCLK() OnNcLButtonDblClk WM_NCMBUTTONDOWN ON_WM_NCMBUTTONDOWN() OnNcMButtonDown WM_NCMBUTTONUP ON_WM_NCMBUTTONUP() OnNcMButtonUp WM_NCMBUTTONDBLCLK ON_WM_NCMBUTTONDBLCLK() OnNcMButtonDblClk WM_NCRBUTTONDOWN ON_WM_NCRBUTTONDOWN() OnNcRButtonDown WM_NCRBUTTONUP ON_WM_NCRBUTTONUP() OnNcRButtonUp WM_NCRBUTTONDBLCLK ON_WM_NCRBUTTONDBLCLK() OnNcRButtonDblClk WM_NCMOUSEMOVE ON_WM_NCMOUSEMOVE() OnNcMouseMove

비 클라이언트 영역 마우스 메시지 (3/4) 메시지 핸들러 형태 nHitTest point 메시지가 생성될 때의 마우스 커서 위치를 나타내는 상수값  다음 페이지 표 참조 point 메시지가 생성될 때의 마우스 커서 위치(스크린 좌표) 클라이언트 좌표로 변환하려면 CWnd::ScreenToClient() 함수를 사용 afx_msg void OnNc* (UINT nHitTest, CPoint point) ;

비 클라이언트 영역 마우스 메시지 (4/4) nHitTest 상수값 의미 HTCAPTION 타이틀바 HTCLIENT HTCLOSE 종료 버튼 HTHSCROLL 가로 스크롤 바 HTMENU 메뉴 HTMAXBUTTON 또는 HTZOOM 최대화 버튼 HTMINBUTTON 또는 HTREDUCE 최소화 버튼 HTSYSMENU 시스템 메뉴 HTVSCROLL 세로 스크롤 바

이외 마우스와 관련된 것들 집에서 읽어 볼 것: 교재 pp 214~220 마우스 포인터의 모양 지정: 마우스 동작 범위 지정 HCURSOR SetCursor (HCURSOR hCursor) ; ::ClipCursor (lpRect pRect) ;

핸들러 추가의 Before/After

핸들러 추가의 Before/After “윈도우 매시지 핸들러 추가” 수행 시 바뀌는 것 Class 선언 내 함수 원형 추가 (header 파일) Class 정의 내 함수 구현부 추가 (cpp 파일) 메시지와 핸들러를 연결하는 매크로 추가 (cpp 파일) 예) CChildView에 WM_MOUSEMOVE 핸들러 추가 시 ChildView.h ChildView.cpp afx_msg void OnMouseMove(UINT nFlags, CPoint point); void CChildView::OnMouseMove(UINT nFlags, CPoint point) { CWnd::OnMouseMove(nFlags, point); } BEGIN_MESSAGE_MAP(CChildView, CWnd) ON_WM_PAINT() ON_WM_MOUSEMOVE() END_MESSAGE_MAP()

마우스 메시지 핸들러와 매크로 비 클라이언트 영역 마우스 메시지 핸들러 메시지 메시지맵 매크로 메시지 핸들러 WM_NCLBUTTONDOWN ON_WM_NCLBUTTONDOWN() OnNcLButtonDown WM_NCLBUTTONUP ON_WM_NCLBUTTONUP() OnNcLButtonUp WM_NCLBUTTONDBLCLK ON_WM_NCLBUTTONDBLCLK() OnNcLButtonDblClk WM_NCMBUTTONDOWN ON_WM_NCMBUTTONDOWN() OnNcMButtonDown WM_NCMBUTTONUP ON_WM_NCMBUTTONUP() OnNcMButtonUp WM_NCMBUTTONDBLCLK ON_WM_NCMBUTTONDBLCLK() OnNcMButtonDblClk WM_NCRBUTTONDOWN ON_WM_NCRBUTTONDOWN() OnNcRButtonDown WM_NCRBUTTONUP ON_WM_NCRBUTTONUP() OnNcRButtonUp WM_NCRBUTTONDBLCLK ON_WM_NCRBUTTONDBLCLK() OnNcRButtonDblClk WM_NCMOUSEMOVE ON_WM_NCMOUSEMOVE() OnNcMouseMove

내가 만든 class 추가 하기

CLASS 추가 기능 활용 새로운 클래스를 프로젝트에 추가 시 활용

CLASS 추가 시 추가되는 것 Header File CPP File #pragma once // 한번만 include 되게 함 class MyClass …… #include "StdAfx.h“ // precompiled header // MFC 기본 class를 // 사용할 수 있게 해 줌 #include "MyClass.h“ ……

Useful tips for programming

Debuging? 프로그램 시 드는 의문: 해결법: 프로그램이 제대로 동작하고 있는 걸까? OR 지금 현재 변수 값이 얼마일까? 해결법: DEBUG 모드를 활용하자! Debug 모드가 주는 장점들 문장 출력 (printf와 비슷) : TRACE 이용 프로그램 일시 중단 : 중단점 활용 변수 값 조사 : 조사식/호출스택 이용 값의 유효성 상시 검사: ASSERT 이용

Different modes for compiling Debug Mode : 프로그램 개발 모드 여러가지 편리한 기능 제공 수행 속도가 떨어짐 (대규모 메모리 생성 시) Release Mode : 프로그램 배포 모드 프로그램 용량 최적화 수행 속도 최적화 활성 구성 설정 바꾸기: 빌드  구성관리자

Debug Mode 활용하기 먼저 활성구성을 Debug Mode로 바꿈 F5를 누르거나 “디버깅시작” 실행 디버깅 기능들이 모두 사용 가능 하게 됨 TRACE, 중단점, 조사식 등의 기능 사용 Ctrl + F5를 누르거나 “디버깅하지 않고 시작” 실행 디버깅 기능이 사용 안됨 빠르게 테스트 할 때 활용

TRACE 원하는 문장을 출력창에 표시한다. 사용법 (printf와 동일) 출력결과: TRACE( “Now Running! /n”); // 문장 출력 TRACE( “i= %d /n”, i); // 변수값 출력

중단점 프로그램의 실행을 일시 멈추고 싶은 곳에 설정 중단점 지정 행의 바로 앞에서 멈춘다. 중단점 설정: F9 키 함수 일 경우는 하나씩 함수가 실행됨 함수 속으로 들어가 실행: F11 키 함수 코드 내로 들어감

변수 값 조사 (실행 중단 시) 변수들의 현재 값을 표시함 자동: 전역 또는 지역 변수 값 표시 지역: 현재 함수 내에서 사용되는 지역 변수 값 표시 조사식: 사용자가 원하는 변수 또는 수식 값 표시 배열이나, pointer값도 조회 가능 <창 표시법: 디버그  창  조사식/자동/지역 >

호출 스택 (실행 중단 시) 현재 중단 된 시점의 함수 호출 스택을 표시 함수의 실행 경로 확인 가능 함수 간을 이동하면 변수값을 조사하는데 활용 <창 표시법: 디버그  창  호출 스택 >

ASSERT 활용 값의 유효성을 확인하기 위해 활용 사용법: 조사식의 값이 false 이면 프로그램 실행 중단 시킴 사용 예: ASSERT ( i==0 ); // i가 0인지 확인 ASSERT ( i<0 ); // i가 0보다 작은지 확인 ASSERT ( func1() ); // func1을 수행하고 // 반환값이 true인지 확인

Keyboard Input

키보드 기초 (1/2) 키보드 처리 윈도우 운영체제는 키보드와 관련된 모든 변화를 메시지 형태로 프로그램에게 전달한다. 키보드 장치 드라이버 시스템 메시지 대기열 응용 프로그램 핸들러 루프 스캔 코드

키보드 기초 (2/2) 키보드 메시지 전달 키보드 포커스 키보드 메시지는 키보드 포커스를 가진 윈도우가 받는다. 활성 윈도우 또는 활성 윈도우의 자식 윈도우가 가지는 일종의 속성

키보드 포커스 (1/2) 키보드 포커스 유형 캐럿

키보드 포커스 (2/2) 키보드 포커스 변화 WM_SETFOCUS WM_KILLFOCUS WM_SETFOCUS

캐럿 (1/2) 관련 함수 함수 이름 역할 CreateCaret() 비트맵을 이용하여 캐럿을 생성한다. CreateGrayCaret() 회색 사각형 모양의 캐럿을 생성한다. CreateSolidCaret() 검정색 사각형 모양의 캐럿을 생성한다. ShowCaret() 캐럿이 보이도록 한다. HideCaret() 캐럿을 숨긴다. GetCaretPos() 캐럿의 위치(클라이언트 좌표)를 얻는다. SetCaretPos() 캐럿의 위치(클라이언트 좌표)를 변경한다. ::DestroyCaret() 캐럿을 파괴한다. ::GetCaretBlinkTime() 캐럿이 깜박이는 간격을 얻는다. ::SetCaretBlinkTime() 캐럿이 깜박이는 간격을 설정한다.

캐럿 (2/2) void CChildView::OnSetFocus(CWnd* pOldWnd) { CWnd ::OnSetFocus(pOldWnd); CreateSolidCaret(20, 20); SetCaretPos(CPoint(50, 50)); ShowCaret(); } void CChildView::OnKillFocus(CWnd* pNewWnd) CWnd ::OnKillFocus(pNewWnd); HideCaret(); ::DestroyCaret();

키 누름 메시지 (1/3) 키 누름 메시지(Keystroke Message) 키 누름 메시지 종류 키보드를 누르거나 떼는 동작에 의해 발생하는 메시지 키 누름 메시지 종류 메시지 의미 WM_KEYDOWN F10, Alt 이외의 키를 누를 때 WM_KEYUP F10, Alt를 이외의 키를 뗄 때 WM_SYSKEYDOWN F10, Alt, Alt + 키 조합을 누를 때 WM_SYSKEYUP F10, Alt, Alt + 키 조합을 뗄 때

키 누름 메시지 (2/3) 메시지 핸들러 형태 nChar nRepCnt nFlags 키에 할당된 가상 키 코드값  다음 페이지 표 참조 nRepCnt 키를 계속 누르고 있을 경우 1보다 큰 값을 가진다. nFlags 키와 관련된 다양한 정보를 담고 있다(MSDN 참조). afx_msg void On#### (UINT nChar, UINT nRepCnt, UINT nFlags) ;

키 누름 메시지 (3/3) 가상 키코드 (Virtual Key Code) 가상 키 코드 VK_CANCEL VK_BACK VK_TAB VK_RETURN VK_SHIFT VK_CONTROL VK_MENU VK_PAUSE VK_CAPITAL VK_ESCAPE VK_SPACE VK_PRIOR VK_NEXT VK_END 해당 키 Ctrl-Break Backspace Tab Enter Shift Ctrl Alt Pause Caps Lock Esc Spacebar PgUp PgDn End VK_HOME VK_LEFT VK_UP VK_RIGHT VK_DOWN VK_SNAPSHOT VK_INSERT VK_DELETE VK_0 - VK_9 VK_A - VK_Z VK_F1 - VK_F12 VK_NUMLOCK VK_SCROLL Home ← ↑ → ↓ Print Screen Insert Delete 0 – 9 A – Z F1 - F12 Num Lock Scroll Lock

문자 메시지 (1/3) 문자 메시지 필요성 - VK_R 키를 누른 경우 ? 문자 가상 키 코드 조합 r 영문 입력 모드에서 VK_R 또는 VK_R + Caps Lock + Shift 키를 누른 경우 R 영문 입력 모드에서 VK_R + Caps Lock 또는 VK_R + Shift 키를 ㄱ 한글 입력 모드에서 VK_R 키를 누른 경우 ㄲ 한글 입력 모드에서 VK_R + Shift 키를 누른 경우

문자 메시지 (2/3) 문자 메시지 - VK_R 키를 누른 경우 문자 메시지 - Alt + VK_R 키를 누른 경우 WM_KEYDOWN WM_CHAR WM_KEYUP WM_KEYDOWN WM_SYSCHAR WM_SYSKEYDOWN WM_SYSKEYUP WM_KEYUP

문자 메시지 (3/3) 메시지 핸들러 형태 nChar nRepCnt nFlags 키에 해당하는 문자 코드(Character Code) 값을 가진다. nRepCnt 키를 계속 누르고 있을 경우 1보다 큰 값을 가진다. nFlags 키와 관련된 다양한 정보를 담고 있다(MSDN 참조). afx_msg void OnChar (UINT nChar, UINT nRepCnt, UINT nFlags) ; afx_msg void OnSysChar (UINT nChar, UINT nRepCnt, UINT nFlags) ;

코딩 연습 사각형 움직이기 1. 위치 저장 변수 선언 CPoint m_pt; 2. 위치에 사각형그리기 (OnPaint) void OnKeyDown (UINT nChar, UINT nRepCnt, UINT nFlags) ; VK_UP 1. 위치 저장 변수 선언 CPoint m_pt; 2. 위치에 사각형그리기 (OnPaint) dc.Rectangle(m_pt.x, …); 3. OnKeyDown 핸들러 추가 4. nChar 값 검사하여 위치변경 if(nChar == VK_RIGHT) m_pt.x += 10; VK_LEFT VK_RIGHT VK_DOWN

Announcement Programming Assignment #2 숙제 마감 연기 4월 10일 금요일 밤 11시 59분까지 이메일 제출 리포트 역시 이메일에 추가하여 제출