Keyboard Input. Announcement 휴강공고 : –4 월 12 일 ( 월요일 ) 수업 없음 – 보강일정 : 차후 공고 예정.

Slides:



Advertisements
Similar presentations
2. 속력이 일정하게 증가하는 운동 Ⅲ.힘과 운동 2.여러 가지 운동. 도입 Ⅲ.힘과 운동 2. 여러 가지 운동 2. 속력이 일정하게 증가하는 운동.
Advertisements

1/ 편집 기능 사용하기 – 실습 1 글자 모양을 바꾸고 싶은 곳을 블록 설정 [ 글자 모양 ] 대화 상자에서 [ 글꼴 ] ‘ 궁서체 ’, [ 글자 색 ] ‘ 토마토색 ’ 으로 선택 → [ 설정 ] 클릭 → 글자 모양 변경.
1/29 키보드로 직접 입력할 수 없는 다양한 기호와 한자를 입력하는 방법을 알아 보자. 또한 블록으로 영역을 설정하는 여러 가지 방법에 대해 살펴본 후 블록 으로 설정된 내용을 복사하여 붙여넣거나, 잘라내고 이동하는 방법에 대해서 도 알아보자. 02_ 문서의 입력과 편집.
Timer Department of Digital Contents Sang Il Park.
메시지 처리의 기본 개념 메시지 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값 윈도우 프로그래밍 가장 중요한 것은 메시지를 처리하는 것 윈도우 시스템 Application 이벤트 발생 메시지 전송 메시지 처리 화면에 출력.
Message Process for SDI Chung-Buk HRD Institute of KCCI Dept. of Information & Communication PhD. Kang, Won-Chan.
강의 내용 : DirectX 개요 DirectX 9 을 이용한 시각화. 목 차 DirectX 출현 배경 DirectX 현재 버전 DirectX 장점 DirectX 구성요소 DirectX SDK 다운로드 및 설치 DirectX SDK 폴더 구성 및 역할 샘플 코드 브라우저.
Department of Digital Contents Sang Il Park
2장. 윈도우즈 입출력 1/211 1.
목차 Contents 무선인터넷용 비밀번호 설정방법 Windows 7 Windows 8 Windows XP MAC OS.
대림대학교 2017년도 1학기 강의 왕보현 순서도와 스크래치 5주차 대림대학교 2017년도 1학기 강의 왕보현
순차, 조건, 반복 이점숙 같은 문제 다르게 해결하기 순차, 조건, 반복 이점숙
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
윤 홍 란 다이알로그(대화상자) 윤 홍 란
Lab 2 Guide: 교재 3장 그래픽 예제 ( 쪽) - 펜과 브러시로 그리기 - 튀는 공
공통 컨트롤의 종류와 특징을 개관한다. 각종 공통 컨트롤의 사용 방법을 익힌다..
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
네트워크 스캔하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
MFC 프로그래밍에 관한 팁 / Keyboard / Timer
MFC 프로그래밍에 관한 팁 / Keyboard
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
Visual C++ Programming Keyboard & Timer
마우스 메시지 처리 기법을 익힌다. 키보드 메시지 처리 기법을 익힌다..
마우스(Mouse) 다루기 컴퓨터응용 및 실습 I.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
5장. 마우스와 키보드.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
2007 1학기 11 프로젝트 기초 실습.
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
스크래치 언어 이해 스크래치 이용법 습득 고양이가 말을 하며 움직이는 예제 작성
10장 컴퓨터 기반 데이터 획득 응용 프로그램 LabVIEW 사용법
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
FRF 해석 방법 문의 국민대학교 연락처 :
10장 tkinter로 GUI 만들기.
24장. 파일 입출력.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Moving Control in Web using Ajax Toolkit
아두이노 매트릭스 코딩 매트릭스 기본 명령어 실습 01차시 ㈜헬로앱스 김영준.
8장. spss statistics 20의 데이터 변환
PSD센서 명령어 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 PSD센서 명령어 이해 및 실습 응용 작품 만들기.
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
컴퓨터활용능력1급필기 06 PC 운영체제(2) Windows 탐색기 제어판 인쇄.
파워포인트 단축키 모음 범주 명령/기능 단축키 오피스 공통 단축키 파일 열기 Ctrl + O O 열려진 창들 간의 전환
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
OpenCV 설정 2.21 만든이 딩딩.
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
2장. 일차원에서의 운동 2.1 평균 속도 2.2 순간 속도 2.3 분석 모형: 등속 운동하는 입자 2.4 가속도
컴퓨터 구성요소와 사용 컴퓨터 문서 작업 인터넷 활용
[INA240] Data Structures and Practice
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
9 브라우저 객체 모델.
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
숙제 작성 및 제출 과정 김진하 2008/03/14.
LABEL Print 설정 ▶ ZEBRA 설정 방법 1. 프린터 설정 LABEL
6 객체.
MFC 기초 윈도우 응용프로그램 개발 간략한 역사 Microsoft Foundation Classes
BoardGame 보드게임 따라가기.
Presentation transcript:

Keyboard Input

Announcement 휴강공고 : –4 월 12 일 ( 월요일 ) 수업 없음 – 보강일정 : 차후 공고 예정

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

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

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

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

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

8 캐럿 (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(); }

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

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

11 키 누름 메시지 (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 VK_SCROLLScroll Lock

12 문자 메시지 (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 키를 누른 경우

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

14 문자 메시지 (3/3) 메시지 핸들러 형태 –nChar 키에 해당하는 문자 코드 (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) ;

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

Timer Department of Digital Contents Sang Il Park

TIMER 주기적인 작업을 지정하기

SetTimer 함수 매 설정된 시간 마다 WM_TIMER 메시지 발생 –id timer 의 id ( 예 : 0, 1, 2, … ) timer 가 여러 개 있을 경우 구분하기 위해 사용 –time: 알람을 울릴 주기 (=millisec) 1000 = 1 초 반드시 윈도우가 만들어 진 후 설정한다. – 주로 WM_CREATE 의 핸들러인 OnCreate 내부에 설정 void SetTimer (int id, int time, void * fp) ; 예 ) SetTimer(0, 100, NULL);

WM_TIMER 핸들러 nIDEvent – 현재 WM_TIMER 를 발생시킨 타이머의 id 코딩 예 ) afx_msg void OnTimer (int nIDEvent ) void CChildView::OnTimer(int nIDEvent) { if(nIDEvent == 0) { // 주기 마다 해 줘야 할 일 } void CChildView::OnTimer(int nIDEvent) { if(nIDEvent == 0) { // 주기 마다 해 줘야 할 일 }

코딩 연습 사각형이 죽 ~ 움직이는 장면 만들기 1. 위치 저장 변수 선언 CPoint m_pt; 2. 위치에 사각형그리기 (OnPaint) dc.Rectangle(m_pt.x, …); 3. WM_CREATE 핸들러 추가 (OnCreate) 4. OnCreate 함수에 Timer 세팅 SetTimer(0,30,NULL); 5. WM_TIMER 핸들러 추가 (OnTimer) if(nIDEvent == 0) ….. 1. 위치 저장 변수 선언 CPoint m_pt; 2. 위치에 사각형그리기 (OnPaint) dc.Rectangle(m_pt.x, …); 3. WM_CREATE 핸들러 추가 (OnCreate) 4. OnCreate 함수에 Timer 세팅 SetTimer(0,30,NULL); 5. WM_TIMER 핸들러 추가 (OnTimer) if(nIDEvent == 0) …..

Having more fun with the Timer Still Image –One Image Animation –Lots of Images! – Cézanne, Paul Still Life

Having more fun with the Timer 시간에 따라 그림이 변한다 = Dynamics 도형의 값 (values/properties)? –색–색 – 모양 – 위치 값 ( 숫자 )

운동학 ( = Dynamics) 도형의 위치를 의미하는 변수의 값을 시간에 따라 변화 시켜 주는 것 Ex) 속도 일정  재미 없다 ! 보다 복잡한 움직임은 ?

보다 재미있는 운동을 위한 약간의 물리 수업 ! 물체의 운동을 기술하기 위해 필요한 값들 – 위치 (position): 보통 p 로 표현 p(t) : t 초 때 위치 – 속도 (velocity): 위치의 시간에 따른 변화 (dp/dt) v(t)= p(t+1) – p(t) – 가속도 (acceleration): 속도의 시간에 따른 변화 (dv/dt) a(t) = v(t+1) – v(t) 시간에 따른 위치가 주어지면 속도, 가속도를 구할 수 있다. 그 반대는 ?

가속도가 주어지면 ? 물체의 운동을 기술하기 위해 필요한 값들 – 가속도 (acceleration): 보통 a 로 표현 a(t) : t 초 때 가속도 – 속도 (velocity): t 초 후 속도차이는 가속도 만큼 v(t+1) = v(t) + a(t)*1 초 – 위치 (position): t 초 후 위치 차이는 속도 만큼 p(t+1) = p(t) + v(t)*1 초

가속도를 주는 식 : 운동방정식 뉴튼의 운동 방정식 (Equation of Motion) – f = ma – 힘이 주어지면 가속도를 계산할 수 있다. – 가속도가 주어지면 Δt 초 후의 속도가 계산 가능 – 속도가 주어지면 Δt 초 후의 위치가 계산 가능 Ex) – 자유낙하 힘 = 중력가속도 g ( =-9.8m/sec 2 ) * 무게 – 스프링 힘 = 기준 위치와의 차이 f = k x (k: 스프링 상수 )

운동학을 프로그래밍하자 ! 1. 위치 / 속도 / 가속도를 저장할 변수를 만든다 ( m_p, m_v, m_a ) 2. 정해진 시간마다 다음의 일을 반복 1. 주어진 상태에서의 힘 계산 (ex ) 중력 or 스프링힘 ) 2. 가속도 값 갱신 ( a = f/m ) 3. 속도 값 갱신 ( v = v + a * dt ) 4. 위치 값 갱신 ( p = p + v * dt ) 5. 변경된 위치에 그림 그리기

코딩 연습 공 튕기기 아래와 같은 순서대로 각자 코딩 해 보자 1. 정해진 위치에서 공이 자유 낙하  a = g 2. 마우스로 클릭하면 공의 위치를 다시 세팅 3. 밑에 벽이 있어 공이 다시 튀겨 올라 간다 벽에 닿는 순간 다음과 같이 값을 변경  p(t+dt) = 벽과 닿은 위치  v(t+dt) = - e * v (t) (e: 반발계수, 보통 0.8) 4. 마우스로 공을 클릭하면 그 순간만 가속도 증가 (= 드리볼 )  a(t) = g + f (f: 임의의 값 )  이 후 다시 a = g 로 회귀 해야 함 아래와 같은 순서대로 각자 코딩 해 보자 1. 정해진 위치에서 공이 자유 낙하  a = g 2. 마우스로 클릭하면 공의 위치를 다시 세팅 3. 밑에 벽이 있어 공이 다시 튀겨 올라 간다 벽에 닿는 순간 다음과 같이 값을 변경  p(t+dt) = 벽과 닿은 위치  v(t+dt) = - e * v (t) (e: 반발계수, 보통 0.8) 4. 마우스로 공을 클릭하면 그 순간만 가속도 증가 (= 드리볼 )  a(t) = g + f (f: 임의의 값 )  이 후 다시 a = g 로 회귀 해야 함

더 다양한 예제를 찾아보자