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 メソッドを呼び出さないでください。
サーバーは 1 つの接続ポイントのみを保持します。 元のシンク オブジェクトが削除されるまで、2 つ目のシンク オブジェクトのエラーを知らそうとします。 通知が不要な場合は、アプリケーションで 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 Professional 上の TSF 1.0 |