Freigeben über


ITextStoreACP::AdviseSink-Methode (textstor.h)

Die ITextStoreACP::AdviseSink-Methode installiert eine neue Empfehlungssenke über die ITextStoreACPSink-Schnittstelle oder ändert eine vorhandene Empfehlungssenke. Die Senkenschnittstelle wird durch den Punk-Parameter angegeben.

Syntax

HRESULT AdviseSink(
  [in] REFIID   riid,
  [in] IUnknown *punk,
  [in] DWORD    dwMask
);

Parameter

[in] riid

Gibt die Senkenschnittstelle an.

[in] punk

Zeiger auf die Senkenschnittstelle. Darf nicht NULL sein.

[in] dwMask

Gibt die Ereignisse an, die die Empfehlungssenke benachrichtigen. Weitere Informationen zu möglichen Parameterwerten finden Sie unter TS_AS_*-Konstanten.

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

Wert BESCHREIBUNG
S_OK
Die Methode war erfolgreich.
CONNECT_E_ADVISELIMIT
Ein Senkenschnittstellenzeiger konnte nicht abgerufen werden.
E_INVALIDARG
Die angegebene Senkenschnittstelle wird nicht unterstützt.
E_UNEXPECTED
Das angegebene Senkenobjekt konnte nicht abgerufen werden.

Hinweise

Nachfolgende Aufrufe mit derselben Schnittstelle, dargestellt durch den Punk-Parameter , werden als Anforderungen zum Aktualisieren des dwMask-Parameters behandelt. Server sollten die AddRef-Methode für die Senke nicht als Reaktion auf eine solche Anforderung aufrufen.

Server verwalten nur einen einzelnen Verbindungspunkt. Versuche, ein zweites Senkenobjekt zu empfehlen, schlagen fehl, bis das ursprüngliche Senkenobjekt entfernt wurde. Anwendungen sollten die ITextStoreACP::UnadviseSink-Methode verwenden, um die Registrierung des Senkenobjekts aufzuheben, wenn keine Benachrichtigungen erforderlich sind.

Verwenden Sie diese Methode, um die ITextStoreACPServices-Schnittstelle abzurufen.

Beispiele

CMyTextEditor ITextStoreACP


STDMETHODIMP CMyTextEditor::AdviseSink(REFIID riid, IUnknown *punk, DWORD dwMask)
{
        HRESULT         hr;
        IUnknown                *punkID;
        typedef struct
        {
        IUnknown                *punkID;
        ITextStoreACPSink       *pTextStoreACPSink;
        DWORD                   dwMask;
        }ADVISE_SINK, *PADVISE_SINK;    
        
        // Determine if the sink interface exists. 
        // Get the pointer to the IUnknown interface and check if the IUnknown 
        // pointer is the same as a pointer to an existing sink. 
        // If the sink exists, update the existing sink with the  
        // dwMask parameters passed to this method.      
        hr = QueryInterface(IID_IUnknown, (LPVOID*)&punkID);

        if(FAILED(hr))
        {
                hr = E_INVALIDARG;
        }       

        if(punkID == m_AdviseSink.punkID)
        {
                m_AdviseSink.dwMask = dwMask;
                hr = S_OK;
        }

        // If the sink does not exist, do the following: 
        // 1. Install a new sink. 
        // 2. Keep the pointer to the IUnknown interface to uniquely 
        //        identify this advise sink. 
        // 3. Set the dwMask parameter of this new sink to the dwMask  
        //    parameters passed to this method. 
        // 4. Increment the reference count. 
        // 5. Release the IUnknown pointer, since this pointer is no 
        //        longer required. 

        if(IsEqualIID(riid, IID_ITextStoreACPSink))
        {
                punk->QueryInterface(IID_ITextStoreACPSink,
                         (LPVOID*)&m_AdviseSink.pTextStoreACPSink);
                m_AdviseSink.punkID = punkID;
                m_AdviseSink.dwMask = dwMask;
                punkID->AddRef();
                punkID->Release();

                hr = S_OK;
        }
        return hr;
        
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile textstor.h
DLL Msctf.dll
Verteilbare Komponente TSF 1.0 unter Windows 2000 Professional

Weitere Informationen

Itextstoreacp

ITextStoreACP::UnadviseSink

ITextStoreACPServices

TS_AS_*-Konstanten