바로 가기 키 컨트롤 정보

바로 가기 키 컨트롤은 사용자가 키 입력 조합을 입력하여 바로 가기 키로 사용할 수 있는 창입니다. 바로 가기 키는 사용자가 작업을 빠르게 수행하기 위해 누를 수 있는 키 조합입니다. 예를 들어 사용자는 지정된 창을 활성화하고 z 순서의 맨 위로 가져오는 바로 가기 키를 만들 수 있습니다. 바로 가기 키 컨트롤은 사용자가 선택한 키 조합을 표시하며 사용자가 올바른 키조합을 선택할 수 있도록 합니다. 다음 스크린샷은 사용자가 Alt 키를 누른 후 대화 상자에 바로 가기 키 컨트롤이 표시되는 방법을 보여 줍니다.

screen shot of a dialog box that contains a hot key control

바로 가기 키 컨트롤 사용

사용자가 바로 가기 키로 사용할 키 조합을 입력하면 바로 가기 키 컨트롤에 키 이름이 표시됩니다. 키 조합은 한정자 키(예: Ctrl, Alt 또는 Shift)와 함께 제공되는 키(예: 문자 키, 화살표 키, 기능 키 등)로 구성됩니다.

사용자가 키 조합을 선택하면 애플리케이션은 바로 가기 키 컨트롤에서 키 조합을 검색하고 이를 사용하여 시스템에서 바로 가기 키를 설정합니다. 바로 가기 키 컨트롤에서 검색된 정보에는 한정자 키 및 그와 함께 제공되는 키의 가상 키 코드를 나타내는 플래그가 포함됩니다.

애플리케이션은 바로 가기 키 컨트롤에서 제공하는 정보를 사용하여 전역 바로 가기 키 또는 스레드별 바로 가기 키를 설정할 수 있습니다. 전역 바로 가기 키는 특정 창과 연결되며, 사용자가 시스템의 어떤 부분에서나 창을 활성화할 수 있습니다. 애플리케이션은 WM_SETHOTKEY 메시지를 사용하여 전역 바로 가기 키를 설정합니다. 사용자가 전역 바로 가기 키를 누를 때마다 WM_SETHOTKEY에 지정된 창은 SC_HOTKEY 값을 지정하는 WM_SYSCOMMAND 메시지를 수신합니다. 이 메시지는 수신하는 창을 활성화합니다. 바로 가기 키는 WM_SETHOTKEY를 호출한 애플리케이션이 종료될 때까지 유효한 상태로 유지됩니다.

스레드별 바로 가기 키는 메시지 루프의 다음 반복에 의해 제거되도록 특정 스레드의 시작 부분에 게시되는 WM_HOTKEY 메시지를 생성합니다. 애플리케이션은 RegisterHotKey 함수를 사용하여 스레드별 바로 가기 키를 설정합니다.

바로 가기 키 컨트롤 메시지

바로 가기 키 컨트롤을 만든 후 애플리케이션은 세 가지 메시지(HKM_SETRULESHKM_SETHOTKEYHKM_GETHOTKEY)를 사용하여 상호 작용합니다.

애플리케이션은 HKM_SETRULES 메시지를 보내 잘못된 바로 가기 키로 간주되는 Ctrl, Alt 및 Shift 키 조합 집합을 지정할 수 있습니다. 애플리케이션이 잘못된 키 조합을 지정하는 경우 사용자가 잘못된 조합을 선택할 때 사용할 기본 한정자 조합도 지정해야 합니다. 사용자가 잘못된 조합을 입력하면 시스템에서 잘못된 조합과 기본 조합에 대해 논리합 작업을 수행합니다. 결과는 유효한 조합으로 간주됩니다. 문자열로 변환되고 컨트롤에 표시됩니다.

HKM_SETHOTKEY 메시지는 애플리케이션이 바로 가기 키 컨트롤에 대한 바로 가기 키 조합을 설정할 수 있도록 합니다. 이 메시지는 일반적으로 바로 가기 키 컨트롤을 만들 때도 사용됩니다.

애플리케이션에서 HKM_GETHOTKEY 메시지를 사용하여 사용자가 선택한 바로 가기 키의 가상 키 코드 및 한정자 플래그를 검색합니다.

바로 가기 키 컨트롤 알림

바로 가기 키 컨트롤은 WM_NOTIFY 메시지를 통해 알림 코드를 보내지 않습니다. 그러나 사용자가 컨트롤의 내용을 변경할 때 WM_COMMAND 메시지를 통해 EN_CHANGE 알림을 보냅니다.

기본 바로 가기 키 메시지 처리

이 섹션에서는 바로 가기 키 컨트롤과 함께 사용되는 미리 정의된 HOTKEY_CLASS 창 클래스에 대한 창 프로시저에서 처리하는 창 메시지에 대해 설명합니다.

메시지 수행된 처리
WM_CHAR 가상 키 코드를 검색합니다.
WM_CREATE 바로 가기 키 컨트롤을 초기화하고, 바로 가기 키 규칙을 지우고, 시스템 글꼴을 사용합니다.
WM_ERASEBKGND 캐럿을 숨기고 , DefWindowProc 함수를 호출한 후, 다시 캐럿을 표시합니다.
WM_GETDLGCODE DLGC_WANTCHARSDLGC_WANTARROWS 값의 조합을 반환합니다.
WM_GETFONT 글꼴을 검색합니다.
WM_KEYDOWN 키가 Enter, Tab, 스페이스 바, Del, Esc 또는 Backspace인 경우 DefWindowProc 함수를 호출합니다. 키가 Shift, Ctrl 또는 Alt인 경우 조합이 유효한지 확인하고, 유효하면 조합을 사용하여 바로 가기 키를 설정합니다. 다른 모든 키는 유효성을 먼저 검사하지 않고 바로 가기 키로 설정됩니다.
WM_KEYUP 가상 키 코드를 검색합니다.
WM_KILLFOCUS 캐럿을 제거합니다.
WM_LBUTTONDOWN 포커스를 창으로 설정합니다.
WM_NCCREATE WS_EX_CLIENTEDGE 창 스타일을 설정합니다.
WM_PAINT 바로 가기 키 컨트롤을 그립니다.
WM_SETFOCUS 캐럿을 만들고 표시합니다.
WM_SETFONT 글꼴을 설정합니다.
WM_SYSCHAR 가상 키 코드를 검색합니다.
WM_SYSKEYDOWN 키가 Enter, Tab, 스페이스 바, Del, Esc 또는 Backspace인 경우 DefWindowProc 함수를 호출합니다. 키가 Shift, Ctrl 또는 Alt인 경우 조합이 유효한지 확인하고, 유효하면 조합을 사용하여 바로 가기 키를 설정합니다. 다른 모든 키는 유효성을 먼저 검사하지 않고 바로 가기 키로 설정됩니다.
WM_SYSKEYUP 가상 키 코드를 검색합니다.