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 |
---|---|
|
Metode berhasil. |
|
Penunjuk antarmuka sink tidak dapat diperoleh. |
|
Antarmuka sink yang ditentukan tidak didukung. |
|
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk