Compartilhar via


Método ITextStoreACP::AdviseSink (textstor.h)

O método ITextStoreACP::AdviseSink instala um novo coletor de consultoria da interface ITextStoreACPSink ou modifica um coletor de consultoria existente. A interface do coletor é especificada pelo parâmetro punk .

Sintaxe

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

Parâmetros

[in] riid

Especifica a interface do coletor.

[in] punk

Ponteiro para a interface do coletor. Não pode ser NULL.

[in] dwMask

Especifica os eventos que notificam o coletor de avisos. Para obter mais informações sobre possíveis valores de parâmetro, consulte Constantes TS_AS_*.

Retornar valor

Esse método pode retornar um desses valores.

Valor Descrição
S_OK
O método foi bem-sucedido.
CONNECT_E_ADVISELIMIT
Não foi possível obter um ponteiro de interface do coletor.
E_INVALIDARG
A interface do coletor especificada não tem suporte.
E_UNEXPECTED
Não foi possível obter o objeto de coletor especificado.

Comentários

Chamadas subsequentes com a mesma interface, representadas pelo parâmetro punk , são tratadas como solicitações para atualizar o parâmetro dwMask . Os servidores não devem chamar o método AddRef no coletor em resposta a essa solicitação.

Os servidores mantêm apenas um único ponto de conexão. Tenta aconselhar que um segundo objeto coletor falhe até que o objeto de coletor original seja removido. Os aplicativos devem usar o método ITextStoreACP::UnadviseSink para cancelar o registro do objeto coletor quando as notificações não forem necessárias.

Use esse método para obter a interface ITextStoreACPServices .

Exemplos

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;
        
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho textstor.h
DLL Msctf.dll
Redistribuível TSF 1.0 no Windows 2000 Professional

Confira também

Itextstoreacp

ITextStoreACP::UnadviseSink

ITextStoreACPServices

Constantes TS_AS_*