다음을 통해 공유


IOleInPlaceFrame::TranslateAccelerator 메서드(oleidl.h)

개체가 활성 상태인 동안 컨테이너의 프레임에 대한 액셀러레이터 키 입력을 변환합니다.

구문

HRESULT TranslateAccelerator(
  [in] LPMSG lpmsg,
  [in] WORD  wID
);

매개 변수

[in] lpmsg

키 입력 메시지를 포함하는 MSG 구조체에 대한 포인터입니다.

[in] wID

컨테이너 제공 가속기 테이블의 키 입력에 해당하는 명령 식별자 값입니다. 컨테이너는 다시 번역하는 대신 이 값을 사용해야 합니다.

반환 값

이 메서드는 성공에 대한 S_OK 반환합니다. 가능한 다른 반환 값은 다음과 같습니다.

반환 코드 설명
S_FALSE
키 입력이 사용되지 않았습니다.
E_INVALIDARG
지정한 포인터가 잘못되었습니다.
E_UNEXPECTED
예기치 않은 오류가 발생했습니다.

설명

발신자에 대한 참고 사항

IOleInPlaceFrame::TranslateAccelerator 메서드는 컨테이너(프레임)를 위한 키 입력 가속기가 수신될 때 OleTranslateAccelerator에 의해 간접적으로 호출됩니다.

구현자에 대한 참고 사항

컨테이너 애플리케이션은 일반적인 가속기 처리를 수행하거나 wID 를 직접 사용한 다음, 키 입력 가속기가 처리되었는지 여부를 나타내는 를 반환해야 합니다. 컨테이너가 MDI 애플리케이션이고 TranslateAccelerator 함수가 실패하는 경우 컨테이너는 일반적인 메시지 처리와 마찬가지로 TranslateMDISysAccel 함수를 호출할 수 있습니다.

현재 위치 개체는 가속기 메시지를 번역할 때 첫 번째 기회를 주어야 합니다. 그러나 DLL 개체 애플리케이션에서 구현된 개체에는 자체 메시지 펌프가 없으므로 컨테이너의 메시지 큐에서 메시지를 받습니다. 개체가 메시지를 처음 번역할 수 있도록 하려면 컨테이너가 자체 가속기 번역을 수행하기 전에 항상 IOleInPlaceFrame::TranslateAccelerator 를 호출해야 합니다. 반대로, 실행 가능한 개체 애플리케이션은 TranslateAccelerator를 호출한 후 두 번역 함수가 모두 실패하는 경우에만 TranslateMessageDispatchMessage를 호출한 후 OleTranslateAccelerator를 호출해야 합니다.

컨테이너가 자체 가속기 키 입력 변환을 수행하는 개체 애플리케이션에서 제대로 작동할 수 있도록 컨테이너에 대한 가속기 테이블을 정의해야 합니다. 테이블은 다음과 같이 정의해야 합니다.

"char", wID, VIRTKEY, CONTROL

키보드 가속기를 설명하는 가장 일반적인 방법입니다. 이렇게 하지 않으면 현재 위치 세션 중에 키 입력이 손실되거나 잘못된 개체로 전송될 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 oleidl.h

추가 정보

IOleInPlaceFrame

IOleInPlaceFrame::TranslateAccelerator

OleTranslateAccelerator

TranslateAccelerator

TranslateMDISysAccel