Partilhar via


Editar contextos

Aplicações

Para criar um contexto de edição, um aplicativo chama ITfDocumentMgr::CreateContext.

Serviços de Texto

Um serviço de texto geralmente usa o contexto de edição ativo no momento. O contexto de edição atualmente ativo é o contexto de edição na parte superior da pilha do gerenciador de documentos ativo. Para obter o contexto ativo no momento, um serviço de texto chama ITfThreadMgr::GetFocus para obter o gerenciador de documentos ativo e, em seguida, chama ITfDocumentMgr::GetTop para obter o contexto de edição na parte superior da pilha.

Em alguns casos, um serviço de texto requer seu próprio contexto de edição. Para criar um contexto de edição, um serviço de texto chama ITfDocumentMgr::CreateContext.

Editar Cookies

Muitos métodos, como ITfRange::SetText, exigem uma maneira de identificar um contexto de edição que tenha um bloqueio de documento somente leitura ou leitura/gravação . O bloqueio de documentos é obtido através de uma negociação entre o gestor da TSF e a aplicação. Um serviço de texto não pode executar essa negociação diretamente. Um serviço de texto só pode obter um bloqueio solicitando uma sessão de edição com um contexto específico e acesso somente leitura ou leitura/gravação. Quando a sessão de edição é concedida, o serviço de texto é fornecido com um cookie de edição que identifica o contexto de edição com o acesso solicitado. Este cookie é então passado para o método para identificar o contexto de edição com o acesso adequado.

ITfDocumentMgr::CreateContext também fornece um cookie de edição para o criador de contexto. Este cookie tem acesso somente leitura e não há como modificar o nível de acesso. Na verdade, o gestor da TSF não negoceia um bloqueio de documentos para este cookie de edição. O cookie é marcado internamente como somente leitura, mas o documento não está realmente bloqueado. Por exemplo, se o criador de contexto chamar ITfContext::GetSelection com o cookie de edição retornado por ITfDocumentMgr::CreateContext , isso resultará no do aplicativo ITextStoreACP::GetSelection ou ITextStoreAnchor::GetSelection sendo chamado. Antes de obter a seleção, a candidatura determinará se existe um bloqueio de documento. Como não existe bloqueio, o aplicativo falhará com TS_E_NOLOCK. Ou seja, se um aplicativo chama um método com esse cookie que resulta em um dos métodos de armazenamento de texto do aplicativo sendo chamado, ele deve lidar com esse caso internamente porque o aplicativo não terá realmente um bloqueio de documento.

Se o criador de contexto precisar de um cookie de edição com acesso de leitura/gravação, ele deverá estabelecer sua própria sessão de edição.

ITfContext

ITfDocumentMgr::CreateContext

ITfThreadMgr::GetFocus

ITfDocumentMgr::GetTop

ITfRange::SetText

de bloqueios de documentos

Editar sessões

ITfContext::GetSelection

ITextStoreACP::GetSelection

ITextStoreAnchor::GetSelection