ITextStoreACP ::AdviseSink, méthode (textstor.h)
La méthode ITextStoreACP ::AdviseSink installe un nouveau récepteur d’avis à partir de l’interface ITextStoreACPSink ou modifie un récepteur d’avis existant. L’interface récepteur est spécifiée par le paramètre punk .
Syntaxe
HRESULT AdviseSink(
[in] REFIID riid,
[in] IUnknown *punk,
[in] DWORD dwMask
);
Paramètres
[in] riid
Spécifie l’interface récepteur.
[in] punk
Pointeur vers l’interface récepteur. Impossible d’avoir la valeur NULL.
[in] dwMask
Spécifie les événements qui informent le récepteur de conseil. Pour plus d’informations sur les valeurs de paramètres possibles, consultez constantes TS_AS_*.
Valeur retournée
Cette méthode peut retourner l’une de ces valeurs.
Valeur | Description |
---|---|
|
La méthode a réussi. |
|
Impossible d’obtenir un pointeur d’interface récepteur. |
|
L’interface récepteur spécifiée n’est pas prise en charge. |
|
Impossible d’obtenir l’objet récepteur spécifié. |
Remarques
Les appels suivants avec la même interface, représentée par le paramètre punk , sont gérés comme des demandes de mise à jour du paramètre dwMask . Les serveurs ne doivent pas appeler la méthode AddRef sur le récepteur en réponse à une telle demande.
Les serveurs ne gèrent qu’un seul point de connexion. Les tentatives de notification d’échec d’un deuxième objet récepteur n’ont pas été effectuées jusqu’à ce que l’objet récepteur d’origine soit supprimé. Les applications doivent utiliser la méthode ITextStoreACP ::UnadviseSink pour annuler l’inscription de l’objet récepteur lorsque les notifications ne sont pas requises.
Utilisez cette méthode pour obtenir l’interface ITextStoreACPServices .
Exemples
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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | textstor.h |
DLL | Msctf.dll |
Composant redistribuable | TSF 1.0 sur Windows 2000 Professionnel |