Delen via


Tekstarchieven

Positie van toepassingsteken (ACP)

Een ACP is de locatie van een teken of tekens in een tekststroom die wordt uitgedrukt als het aantal tekens vanaf het begin van de tekststroom. Omdat het ACP-model op nul is gebaseerd, heeft het eerste teken in een tekststroom een ACP van nul. Bijvoorbeeld:

Text Stream  H | e | l | l | o |   | W | o | r | l | d
ACP          0   1   2   3   4   5   6   7   8   9   10

Een tekstarchief implementeert een object dat ondersteuning biedt voor de ITextStoreACP-interface, waarmee de tekststroom kan worden uitgedrukt in een ACP. De ITextStoreACP interfacemethoden gebruiken het ACP-bereik van de tekststroom om de tekst te wijzigen.

Anchor-Based-toepassingen

De manager maakt gebruik van de op ACP gebaseerde methoden om tekst te bewerken. Er is echter een op anker gebaseerde benadering beschikbaar voor Microsoft Active Accessibility-clients die ondersteuning bieden voor ankers, waarbij de manager gebruikmaakt van ITextStoreAnchor- en ITextStoreAnchorSink methoden voor het verpakken van de ITextStoreACP- en ITextStoreACPP methoden.

Toegangsbeheer voor documenten

Het tekstarchief bepaalt de toegang tot de tekststroom met behulp van documentvergrendelingen. Als u het tekstarchief wilt lezen of wijzigen, moet de manager eerst een adviessink installeren die ondersteuning biedt voor de ITextStoreACPSink-interface door de ITextStoreACP::AdviseSink methode aan te roepen en een aanwijzer door te geven aan een advies-sink. Met de adviessink kan de manager een documentvergrendeling in het tekstarchief verkrijgen en meldingen ontvangen wanneer het tekstarchief wordt gewijzigd door iets anders dan de manager, zoals gebruikersinvoer via de toepassing. Adviessinks worden verderop in dit onderwerp besproken.

Het tekstarchief initialiseren

Een toepassing initialiseert een tekstarchief door de volgende stappen uit te voeren:

  1. Maak een threadbeheerobject op basis van de ITfThreadMgr interface door de functie CoCreateInstance aan te roepen met een aanwijzer naar een threadbeheerobject. Hier volgt een codevoorbeeld van het implementeren van een thread manager-object.

    hr = CoCreateInstance (CLSID_TF_ThreadMgr, NULL, CLSCTX_INPROC_SERVER, 
                            IID_ITfThreadMgr, (void**)&pThreadMgr);
    
  2. Activeer het threadbeheerobject door de methode ITfThreadMgr::Activate aan te roepen. Deze methode levert een aanwijzer op een client-id gebruikt om een contextobject te maken. De threadbeheer wordt gebruikt om een documentbeheerobject te implementeren.

  3. Maak een documentbeheerobject op basis van de ITfDocumentMgr-interface door de methode ITfThreadMgr::CreateDocumentMgr aan te roepen met een aanwijzer naar het documentbeheerobject. Het documentbeheerobject wordt gebruikt om een contextobject te implementeren dat het tekstarchief is.

  4. Maak een contextobject vanuit documentbeheer door de methode ITfDocumentMgr::CreateContext methode aan te roepen met de aanwijzer naar het tekstarchiefobject en een aanwijzer naar de client-id om de threadbeheer te activeren. Hier volgt een voorbeeld van het maken van een contextobject:

    hr = pDocumentMgr->CreateContext(m_ClientID, 0, (ITextStoreACP*)this, 
                                    &pContext, pEditCookie);
    
  5. Push het contextobject naar de stapel met de methode ITfDocumentMgr::P ush. Hier volgt een voorbeeld van het pushen van het contextobject naar de stack:

    hr = pDocumentMgr->Push(pContext);
    

Het tekstarchief wijzigen

De methode ITfDocumentMgr::P ush methode roept ITextStoreACP::AdviseSink met een aanwijzer naar de advies-sinkinterface om een nieuwe sink te installeren of een bestaande adviessink te wijzigen. De adviserende sink ontvangt meldingen wanneer het tekstarchief wordt gewijzigd door iets anders dan de manager, zoals gebruikersinvoer voor de toepassing. Toepassingen moeten de methode ITfThreadMgrEventSink::OnSetFocus aanroepen wanneer de invoermethode de focus krijgt. Andere meldingen aan de threadbeheerder worden aangeboden door de juiste ITextStoreACPSink interfacemethoden aan te roepen.

Toepassingen mogen de interfacemethoden ITextStoreACPSink echter niet aanroepen interfacemethoden als reactie op ITextStoreACP interfacemethoden. Toepassingen mogen alleen ITextStoreACPSink interfacemethoden aanroepen wanneer het tekstarchief wordt gewijzigd door iets anders dan de manager.

De inhoud van het tekstarchief kan worden gewijzigd met een tijdelijke invoerstatus, een samenstellinggenoemd.

Ankers

composities

documentvergrendelingen

ITextStoreACPSink

ITextStoreACP-

ITextStoreAnchor

ITextStoreAnchorSink

ITfDocumentMgr-

ITfThreadMgr-

ITfThreadMgrEventSink::OnSetFocus

TfClientId-

Microsoft Active Accessibility