■ 키보드 메시지
키보드로부터 입력이 발생하면 윈도우즈는 포커스를 가진 프로그램에게 키보드 메시지를 보낸다.
프로그램은 이런 메시지를 받아 키보드 입력을 처리한다.
□ 포커스(Focus)
입력 초점. 키보드 입력을 받아 들일 수 있는 상태.
포커스를 가진 상태란 활성화 되어 있고 현재 사용자가 쓰고 있다는 뜻으로 한 번에 하나의 프로그램만 활성화된다.
멀티 태스킹이 가능한 윈도우 환경이라 하더라도 활성화 될 수 있는 프로그램은 하나 밖에 없으며,
활성화된 프로그램만 포커스를 가지고 입력 받을 수 있다.
□ 키보드 메시지의 종류
메시지는 시스템 메시지와 비시스템 메시지로 나뉜다.
비 시스템 메시지는 사용자가 발생시키는 메시지(WM_...로 시작)이며,
시스템 메시지는 Alt키와 함께 눌러지는 키보드 메시지로, 접두사SYS를 사용하여 운영체제가 부가적인 정보를 따라붙인다.
1. WM_KEYDOWN: 키보드를 누를때 모든 키에 대해 발생(Alt키, 윈도우 키, 한/영전환키 등 특수 키 제외)
2. WM_KEYUP: 키다 떨어질 때(잘 사용하지 않음)
3. WM_CHAR: 키보드로부터 문자 입력
4. WM_DEADCHAR: 유럽의 악센트 문자, 움라우트 문자 입력(이런 언어를 입력받는 프로그램을 만들지 않는 한 신경쓸 필요없음)
(시스템 메시지)
5. WM_SYSKEYDOWN
6. WM_SYSKEYUP
7.WM_SYSCHAR
8.WM_SYSDEADCHAR
□ 키보드 입력 처리
입력된 문자들은 WM_CHAR 메시지에서 모은다. 키보드 입력을 받는 시점(WM_CHAR)과 출력시점(WM_PAINT)이 분리되어 있으므로
입력된 문자들은 바로바로 출력하지 않고 반드시 모아야 한다.
문자를 입력받는 즉시 바로바로 출력하면 다른 프로그램에 의해 가려져 지워졌을 때 다시 복구되지 않을 것이다.
□ TranslateMessage
키누름 메시지(WM_KEYDOWN, WM_SYSKEYDOWN)를 문자메시지로 변환하는 작업을 한다.
WM_CHAR은 사용자에 의해 발생하는 메시지가 아니며, WM_KEYDOWN에 의해 추가로 발생하는 메시지이다.
■ 마우스 메시지
□ 주요 마우스 메시지
'PROGRAMMING > winAPI' 카테고리의 다른 글
[0322수업[ 스레드 (0) | 2011.03.22 |
---|---|
GDI (0) | 2011.03.20 |
[0318수업] 윈도우 메시지 (0) | 2011.03.18 |
[0317수업] struct SCROLLINFO (0) | 2011.03.17 |
DC(Device Contexts) (0) | 2011.03.17 |