다음을 통해 공유


컨텍스트 편집

애플리케이션

편집 컨텍스트를 만들기 위해 애플리케이션은 ITfDocumentMgr::CreateContext를 호출합니다.

Text Services

텍스트 서비스는 현재 활성 편집 컨텍스트를 사용하는 경우가 많습니다. 현재 활성 편집 컨텍스트는 현재 문서 관리자 스택 맨 위에 있는 편집 컨텍스트입니다. 현재 활성 컨텍스트를 가져오기 위해 텍스트 서비스는 ITfThreadMgr::GetFocus 를 호출하여 활성 문서 관리자를 가져온 다음 ITfDocumentMgr::GetTop 을 호출하여 스택 맨 위에 있는 편집 컨텍스트를 가져옵니다.

경우에 따라 텍스트 서비스에 자체 편집 컨텍스트가 필요합니다. 편집 컨텍스트를 만들기 위해 텍스트 서비스는 ITfDocumentMgr::CreateContext를 호출합니다.

쿠키 편집

ITfRange::SetText와 같은 많은 메서드는 읽기 전용 또는 읽기/쓰기 문서 잠금이 있는 편집 컨텍스트를 식별하는 방법이 필요합니다. 문서 잠금은 TSF 관리자와 애플리케이션 간의 협상을 통해 가져옵니다. 텍스트 서비스는 이 협상을 직접 수행할 수 없습니다. 텍스트 서비스는 특정 컨텍스트 및 읽기 전용 또는 읽기/쓰기 액세스 권한이 있는 편집 세션을 요청해야만 잠금을 얻을 수 있습니다. 편집 세션이 부여되면 텍스트 서비스에 요청된 액세스 권한으로 편집 컨텍스트를 식별하는 편집 쿠키 가 제공됩니다. 그런 다음 이 쿠키가 메서드에 전달되어 적절한 액세스 권한으로 편집 컨텍스트를 식별합니다.

ITfDocumentMgr::CreateContext 는 컨텍스트 작성자에 편집 쿠키도 제공합니다. 이 쿠키에는 읽기 전용 액세스 권한이 있으며 액세스 수준을 수정할 방법이 없습니다. 사실 TSF 관리자는 이 편집 쿠키에 대한 문서 잠금을 협상하지 않습니다. 쿠키는 내부적으로 읽기 전용으로 표시되어 있지만 문서가 실제로 잠겨 있지는 않습니다. 예를 들어 컨텍스트 작성자가 ITfDocumentMgr::CreateContext에서 반환한 편집 쿠키를 사용하여 ITfContext::GetSelection을 호출하면 애플리케이션의 ITextStoreACP::GetSelection 또는 ITextStoreAnchor::GetSelection이 호출됩니다. 선택 영역을 가져오기 전에 응용 프로그램에서 문서 잠금이 있는지 확인합니다. 잠금이 없으므로 TS_E_NOLOCK 애플리케이션이 실패합니다. 즉, 애플리케이션이 이 쿠키를 사용하여 메서드를 호출하여 애플리케이션의 텍스트 저장소 메서드 중 하나가 호출되는 경우 애플리케이션에 실제로 문서 잠금이 없기 때문에 내부적으로 이 사례를 처리해야 합니다.

컨텍스트 작성자가 읽기/쓰기 권한이 있는 편집 쿠키가 필요한 경우 자체 편집 세션을 설정해야 합니다.

ITfContext

ITfDocumentMgr::CreateContext

ITfThreadMgr::GetFocus

ITfDocumentMgr::GetTop

ITfRange::SetText

문서 잠금

세션 편집

ITfContext::GetSelection

ITextStoreACP::GetSelection

ITextStoreAnchor::GetSelection