New/MFC 윈도우 프로그래밍

3. 메시지 처리 (3)

onenewkong 2024. 12. 14. 17:23

3.4 키보드 메시지 (Keyboard Message)

자주 사용하는 키보드 메시지와 메시지 핸들러 함수

메시지 유형 발생 상황 메시지 핸들러 함수
WM_KEYDOWN 키를 눌렀을 때 OnKeyDown()
WM_KEYUP 키에서 손을 뗐을 때 OnKeyUp()
WM_CHAR 화면에 문자가 표시되는 키를 누름 OnKeyChar()
WM_SYSKEYDOWN 시스템 키(Alt, F10)를 눌렀을 때 OnSysKeyDown()
WM_SYSKEYUP 시스템 키를 똈을 때 OnSysKeyUp()
WM_SYSCHAR 시스템 키와 문자키를 같이 누름 OnSysChar()
  • WM_CHAR 메시지는 키보드가 눌러짐에 따라 문자가 입력되는 것
  • 문자가 입력된 사건에 의해 WM_CHAR 메시지가 발생
  • WM_CHAR 메시지는 WM_KEYDOWN 메시지가 발생한 후 추가로 발생하는 메시지
  • WM_CHAR 메시지 다음에 WM_KEYUP 메시지 발생
  • 윈도우 애플리케이션에서 Alt, F10 키를 누르면 메인 메뉴로 포커스 이동하므로 Alt, F10 키를 시스템 키로 분류함
  • 사용자가 시스템 키와 조합된 키를 입력하면 WM_KEYDOWN과 WM_KEYUP 메시지가 발생하지 않고 WM_SYSKEYDOWN과 WM_SYSKEYUP 메시지가 발생함
  • 키보드의 메시지 핸들러 함수들을 살펴보면 다음 세 가지의 인수를 전달 받음
  • nChar: 눌러진 키의 가상키 코드, WM_CHAR나 WM_SYSCHAR에서 메시지의 경우에는 눌러진 키의 문자코드 값
  • nRepCount: 키를 계속 누르고 있을 때 반복된 키의 입력 횟수가 전달됨
  • nFlags: 스캔 코드, 이전 키 상태, 키가 눌러질 때의 Alt 키의 상태에 대한 정보가 전달됨

 

실습