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 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | textstor.h |
Dll | Msctf.dll |
可轉散發套件 | Windows 2000 專業版上的 TSF 1.0 |