HACCEL LoadAccelerators( HINSTANCE hInstance, LPCTSTR lpTableName );


리소스로부터 액셀러레이터 테이블을 읽어들인 후 그 핸들을 리턴한다.



lpTableName

액셀러레이터 테이블의 이름 문자열 포인터이되 MAKEINTRESOURCE 매크로를 사용하여 테이블 이름을 입력한다.



int TranslateAccelerator( HWND hWnd, HACCEL hAccTable, LPMSG lpMsg );


키보드 메시지를 WM_COMMAND 메시지로 변경하여 액셀러레이터가 동작할 수 있도록 한다.


액셀러레이터 Ctrl+A 가 입력되었다고 가정했을 때 Ctrl+A 는 액셀러레이터이기 이전에 키보드로부터의 입력이므로 먼저 WM_KEYDOWN 메시지가 발생할 것이고 그대로 내버려 두변 WndProc 의 WM_KEYDOWN 메시지 처리 루틴에서 먼저 이 키값을 처리해 버릴 것이다.


TranslateAccelerator 함수는 lpMsg 의 키보드 입력값을 읽어 이 키값이 hAccTable 에 있는지 먼저 살펴보고 있을 경우 그 키에 해당하는 WM_COMMAND 메시지를 hWnd 윈도우로 전달하고 TRUE 를 리턴해 버린다.



WM_KEYDOWN 메시지는 중간에서 다른 메시지로 변형되거나 추가로 발생시키는 경우가 빈번하다.


WM_KEYDOWN    -> TranslateAccelerator    -> WM_COMMAND( 변형 )

                         -> TranslateMessage       -> WM_CHAR( 추가 발생 )

Posted by 명혀니
,