Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een besturingselement voor uitgebreide bewerking zonder venster, ook wel een tekstservices-object genoemd, is een object dat de functionaliteit biedt van een besturingselement voor uitgebreide bewerking zonder het venster te leveren. Om de functionaliteit van een venster te bieden, zoals de mogelijkheid om berichten te ontvangen en een apparaatcontext waarin het kan tekenen, gebruiken vensterloze uitgebreide besturingselementen voor bewerken een paar interfaces: ITextServices en ITextHost-.
Als u een vensterloos besturingselement voor uitgebreide bewerkingen wilt maken, roept u de functie CreateTextServices aan met een aanwijzer naar uw implementatie van de ITextHost interface. CreateTextServices retourneert een IUnknown- aanwijzer die u kunt opvragen om een aanwijzer op te halen naar de ITextServices implementatie van het vensterloze besturingselement.
Msftedit.dll exporteert een interface-id (IID) met de naam IID_ITextServices die u kunt gebruiken om een query uit te voeren op de IUnknown pointer voor de ITextServices interface. In het volgende voorbeeld ziet u hoe u IID_ITextServices ophaalt en gebruikt om de interface van ITextServices op te halen.
.
.
.
HRESULT hr;
IUnknown* pUnk = NULL;
ITextServices* pTextServices = NULL;
// Create an instance of the application-defined object that implements the
// ITextHost interface.
TextHost* pTextHost = new TextHost();
if (pTextHost == NULL)
goto errorHandler;
// Create an instance of the text services object.
hr = CreateTextServices(NULL, pTextHost, &pUnk);
if (FAILED(hr))
goto errorHandler;
// Retrieve the IID_ITextServices interface identifier from
// Msftedit.dll. The hmodRichEdit parameter is a handle to the
// Msftedit.dll module retrieved by a previous call to the
// GetModuleHandle function.
IID* pIID_ITS = (IID*) (VOID*) GetProcAddress(hmodRichEdit,
"IID_ITextServices");
// Retrieve the ITextServices interface.
hr = pUnk->QueryInterface(*pIID_ITS, (void **)&pTextServices);
if (FAILED(hr))
goto errorHandler;
.
.
.
Msftedit.dll exporteert ook een interface-id (IID) met de naam IID_ITextHost die op een vergelijkbare manier kan worden gebruikt om een query uit te voeren voor de ITextHost-interface.
De ITextHost--interface heeft methoden die door het vensterloze besturingselement worden aangeroepen om informatie over uw venster op te halen. Het text services-object roept bijvoorbeeld de TxGetDC- methode aan om een apparaatcontext op te halen waarin het kan tekenen. Het besturingselement zonder venster roept de methode TxNotify aan om meldingen, zoals de berichten met uitgebreide bewerkingsmeldingen, naar de teksthost te verzenden. Het text services-object roept andere ITextHost- methoden aan om de teksthost aan te vragen om andere venstergerelateerde services uit te voeren. De methode TxInvalidateRect vraagt de teksthost bijvoorbeeld om een rechthoek toe te voegen aan de updateregio van het venster.
Een standaardbesturingselement voor uitgebreid bewerken heeft een vensterprocedure waarmee systeemberichten en berichten van uw toepassing worden verwerkt. U kunt de venstergreep van het besturingselement gebruiken om berichten te verzenden voor het uitvoeren van tekstbewerkingen en andere bewerkingen. Maar een uitgebreid bewerkingselement zonder venster heeft geen vensterprocedure om berichten te ontvangen en te verwerken. In plaats daarvan biedt het een ITextServices interface. Als u berichten wilt verzenden naar een vensterloos besturingselement voor uitgebreide bewerking, roept u de methode TxSendMessage aan. U kunt deze methode gebruiken om alle uitgebreide bewerkingsberichten te verzenden of om andere berichten door te geven die van invloed zijn op het besturingselement, zoals systeemberichten voor muis- of toetsenbordinvoer.
U kunt het text services-object ook maken als onderdeel van een COM-geaggregeerd object. Hierdoor kunt u het text services-object eenvoudig aggregeren met een COM-object (Component Object Model) zonder venster.