다음을 통해 공유


IPreviewHandler::TranslateAccelerator 메서드(shobjidl_core.h)

미리 보기 처리기가 실행 중인 프로세스의 메시지 펌프에서 전달된 키 입력을 처리하도록 미리 보기 처리기를 지시합니다.

구문

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

매개 변수

[in] pmsg

형식: MSG*

창 메시지에 대한 포인터입니다.

반환 값

형식: HRESULT

키 입력 메시지를 미리 보기 처리기에서 처리할 수 있는 경우 처리기는 이를 처리하고 S_OK 반환합니다. 미리 보기 처리기가 키 입력 메시지를 처리할 수 없는 경우 TranslateAccelerator를 사용하여 호스트에 제공합니다. 호스트가 메시지를 처리하는 경우 이 메서드는 S_OK 반환합니다. 호스트가 메시지를 처리하지 않으면 이 메서드는 S_FALSE 반환합니다.

설명

이 함수는 미리 보기 처리기가 실행 중인 프로세스의 메시지 펌프에서만 호출됩니다. 이 함수를 사용하면 TranslateAccelerator를 사용하여 메시지 펌프에서 호스트로 키 입력 메시지를 전달할 수 있습니다.

미리 보기 처리기가 메시지 펌프에서 메시지(키 입력)를 받으면 호스트로 전달해야 합니다.

미리 보기 처리기에서 IObjectWithSite::SetSite 가 호출되면 미리 보기 처리기의 호스트에 대한 참조가 전달됩니다. 개체는 IPreviewHandlerFrame에 대한 해당 사이트를 즉시 QueryInterface하고 해당 포인터를 저장해야 합니다.

그런 다음 미리 보기 처리기에는 GetWindowContext 를 호출하여 키 입력을 필터링하는 가속기 테이블을 가져오는 옵션이 있습니다. 그런 다음 미리 보기는 IsAccelerator 를 사용하여 키 입력을 해당 가속기 테이블과 비교하고 일치하는 키 입력에 대해 IPreviewHandler::TranslateAccelerator 만 호출할 수 있습니다. 이로 인해 성능이 약간 향상될 수 있습니다. 미리 보기 처리기는 DestroyAcceleratorTable 함수를 사용하여 가속기 테이블을 해제해야 합니다.

미리 보기 처리기가 테이블을 완전히 사용하지 않도록 하고 모든 키 입력에 대해 IPreviewHandler::TranslateAccelerator 를 호출하는 것도 허용됩니다. 낮은 무결성 프로세스에서 실행되는 모든 미리 보기 처리기는 이 메서드를 사용해야 합니다.

탭 키를 누르면 미리 보기 처리기에 둘 이상의 탭 중지가 있는 경우 해당 탭 정지 내에서 키보드 포커스를 이동해야 합니다. 현재 키보드 포커스가 해당 탭 중지 중 하나에 있고 키보드 포커스를 앞으로 이동하면 다른 미리 보기 탭 정지로 이동하면 미리 보기에서 다음 탭 정지에서 SetFocus를 호출해야 합니다. 그렇지 않으면 탭 키를 호스트에 전달하여 미리 보기에서 탭을 처리해야 합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista, Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shobjidl_core.h(Shobjidl.h 포함)
재배포 가능 파일 Windows Search 4 이상