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 |
---|---|
|
Die Methode war erfolgreich. |
|
Ein Senkenschnittstellenzeiger konnte nicht abgerufen werden. |
|
Die angegebene Senkenschnittstelle wird nicht unterstützt. |
|
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 |