iTextStoreACP::AdviseSink 方法 (textstor.h)
ITextStoreACP::AdviseSink 方法从 ITextStoreACPSink 接口安装新的建议接收器或修改现有的建议接收器。 接收器接口由 punk 参数指定。
语法
HRESULT AdviseSink(
[in] REFIID riid,
[in] IUnknown *punk,
[in] DWORD dwMask
);
参数
[in] riid
指定接收器接口。
[in] punk
指向接收器接口的指针。 不能为 NULL。
[in] dwMask
指定通知建议接收器的事件。 有关可能的参数值的详细信息,请参阅 TS_AS_* 常量。
返回值
此方法可以返回其中一个值。
值 | 说明 |
---|---|
|
方法成功。 |
|
无法获取接收器接口指针。 |
|
不支持指定的接收器接口。 |
|
无法获取指定的接收器对象。 |
注解
具有相同接口的后续调用(由 punk 参数表示)作为更新 dwMask 参数的请求进行处理。 服务器不应在接收器上调用 AddRef 方法来响应此类请求。
服务器仅维护单个连接点。 尝试建议第二个接收器对象失败,直到删除原始接收器对象。 不需要通知时,应用程序应使用 ITextStoreACP::UnadviseSink 方法取消注册接收器对象。
使用此方法获取 ITextStoreACPServices 接口。
示例
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;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | textstor.h |
DLL | Msctf.dll |
可再发行组件 | Windows 2000 专业版上的 TSF 1.0 |