Partager via


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
S_OK
La méthode a réussi.
CONNECT_E_ADVISELIMIT
Impossible d’obtenir un pointeur d’interface récepteur.
E_INVALIDARG
L’interface récepteur spécifiée n’est pas prise en charge.
E_UNEXPECTED
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

Voir aussi

ITextStoreACP

ITextStoreACP ::UnadviseSink

ITextStoreACPServices

constantes TS_AS_*