WinAPI

[WINAPI]엑셀러레이터

FORHAPPy 2022. 1. 16. 00:11

<메뉴를 선택하지 않고 단축키를 사용하여 메뉴기능을 시행하기>

 

단축키와는 다른이름이다.

 

단축키 : 메뉴이름에& 를 넣어 Alt키와 함께 사용하는 키를 단축키라고 한다. 반드시 Alt키와 함께 사용해야하며 메뉴에있는 항목을 키보드로 선택하는 빠른 방법이지만 엑셀레이터는 메뉴와 상관없이 언제든 사용할 수있다.

 

단축키 / 엑셀레이터 만들기

  1. 메뉴편집기에서 File팝업 메뉴의 속성 윈도우에서 caption을 &를 붙여서 &file로 바꾼다.
  2. .File 아래의 항목 3가지있는데 각 항목의 캡션을 다 수정한다.

  3. 수정전 수정후
    Menu1 Menu&1\tCtrl+A
    Menu2 Menu&2\tCtrl+B
    Exit &Exit\tCtrl+C

이렇게 바꾸면 Alt + F를 누르면 파일 메뉴가 보여지고 각각 1, 2, E가 단축키로 지정되어있다. 그 기능을 수행한다.

 

4. 그러나 뒤에 띄고 Ctral + A 가 엑셀레이터를 지정한건데 현재 상태로는 화면에 보여지기만 하고, 실제 구동은 되지 않는다. 구동이 되게 하기 위해서는 별도의 리소스를 작성해야한다.

 

5. 리소스추가 - 엑셀레이터 편집기 -

다음과 같이 추가한다. 아이디에는 메뉴에서 만든 아이디를 그대로 사용한다.

6.

LoadAccelaterator함수를 추가 하고,

TranslateAccelator 함수도 추가한다. (이 함수는 엑셀레이터가 입력되었을 경우 키보드 메시지를 WM_COMMAND 메시지로 변경하여 엑셀레이터가 동작할 수 있도록 만든다.)

->엑셀레이턱다 입력 되었을 경우 TranslateMessage, DispatchMessage 가 실행되지 못하게 막아버린다.