Bagikan melalui


ITextStoreACP::Metode AdviseSink (textstor.h)

Metode ITextStoreACP::AdviseSink menginstal sink saran baru dari antarmuka ITextStoreACPSink atau memodifikasi sink saran yang ada. Antarmuka sink ditentukan oleh parameter punk .

Sintaks

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

Parameter

[in] riid

Menentukan antarmuka sink.

[in] punk

Arahkan ke antarmuka sink. Tidak boleh NULL.

[in] dwMask

Menentukan peristiwa yang memberi tahu sink saran. Untuk informasi selengkapnya tentang kemungkinan nilai parameter, lihat TS_AS_* Konstanta.

Nilai kembali

Metode ini dapat mengembalikan salah satu nilai ini.

Nilai Deskripsi
S_OK
Metode berhasil.
CONNECT_E_ADVISELIMIT
Penunjuk antarmuka sink tidak dapat diperoleh.
E_INVALIDARG
Antarmuka sink yang ditentukan tidak didukung.
E_UNEXPECTED
Objek sink yang ditentukan tidak dapat diperoleh.

Keterangan

Panggilan berikutnya dengan antarmuka yang sama, yang diwakili oleh parameter punk , ditangani sebagai permintaan untuk memperbarui parameter dwMask . Server tidak boleh memanggil metode AddRef pada sink sebagai respons terhadap permintaan tersebut.

Server hanya mempertahankan satu titik koneksi. Upaya untuk menyarankan objek sink kedua gagal sampai objek sink asli dihapus. Aplikasi harus menggunakan metode ITextStoreACP::UnadviseSink untuk membatalkan pendaftaran objek sink saat pemberitahuan tidak diperlukan.

Gunakan metode ini untuk mendapatkan antarmuka ITextStoreACPServices .

Contoh

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header textstor.h
DLL Msctf.dll
Redistribusi TSF 1.0 di Windows 2000 Professional

Lihat juga

ITextStoreACP

ITextStoreACP::UnadviseSink

ITextStoreACPServices

TS_AS_* Konstanta