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 |
---|---|
|
O método foi bem-sucedido. |
|
Não foi possível obter um ponteiro de interface do coletor. |
|
A interface do coletor especificada não tem suporte. |
|
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 |