Partager via


Méthode ITfContext::TrackProperties (msctf.h)

Obtient une propriété spéciale qui peut énumérer plusieurs propriétés sur plusieurs plages.

Syntaxe

HRESULT TrackProperties(
  [in]  const GUID          **prgProp,
  [in]  ULONG               cProp,
  [in]  const GUID          **prgAppProp,
  [in]  ULONG               cAppProp,
  [out] ITfReadOnlyProperty **ppProperty
);

Paramètres

[in] prgProp

Contient un tableau d’identificateurs de propriétés qui spécifient les propriétés à suivre.

[in] cProp

Contient le nombre d’identificateurs de propriété dans le tableau prgProp .

[in] prgAppProp

Contient un tableau d’identificateurs de propriétés d’application qui spécifient les propriétés d’application à suivre.

[in] cAppProp

Contient le nombre d’identificateurs de propriété d’application dans le tableau prgAppProp .

[out] ppProperty

Pointeur vers un pointeur d’interface ITfReadOnlyProperty qui reçoit la propriété de suivi.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Valeur Description
S_OK
La méthode a réussi.
TF_E_DISCONNECTED
L’objet de contexte ne se trouve pas sur une pile de documents.
E_OUTOFMEMORY
Un échec d’allocation de mémoire s’est produit.
E_INVALIDARG
Un ou plusieurs paramètres ne sont pas valides.

Notes

Cette méthode est utilisée pour identifier rapidement les plages avec des valeurs de propriété cohérentes pour plusieurs propriétés. Bien que cette méthode puisse être dupliquée à l’aide de la méthode ITfContext::GetProperty , le gestionnaire TSF peut accomplir cette tâche plus rapidement.

La propriété obtenue par cette méthode est un type VT_UNKNOWN. Cette propriété peut être utilisée pour obtenir un énumérateur IEnumTfPropertyValue en appelant la méthode QueryInterface avec IID_IEnumTfPropertyValue. Cet énumérateur contient les valeurs de propriété spécifiées par prgProp et prgAppProp.

Exemples


const GUID *rgGuids[2] = {  &GUID_PROP_COMPOSING,
                            &GUID_PROP_ATTRIBUTE };
HRESULT hr;
ITfReadOnlyProperty *pTrackProperty;
TF_SELECTION sel;
IEnumTfRanges *pEnumRanges;
ITfRange *pRangeValue;

// Get the tracking property. 
hr = pContext->TrackProperties(NULL, 0, rgGuids, 2, &pTrackProperty);

// Get the selection range. 
hr = pContext->GetSelection(ec, TF_DEFAULT_SELECTION, 1, &sel, &cFetched);

// Use the property from TrackProperties to get an enumeration of the ranges  
// within the selection range that have the same property values. 
hr = pTrackProperty->EnumRanges(ec, &pEnumRanges, sel.range);

// Enumerate the ranges of text. 
while(pEnumRanges->Next(1, &pRangeValue, NULL) == S_OK)
{
    VARIANT varTrackerValue;
    TF_PROPERTYVAL tfPropertyVal;
    IEnumTfPropertyValue *pEnumPropVal;

    // Get the values for this range of text. 
    hr = pTrackProperty->GetValue(ec, pRangeValue, &varTrackerValue);

    // Because pTrackProperties originates from TrackProperties, 
    // varTrackerValue can be identified as a VT_UNKNOWN/IEnumTfPropertyValue. 
    varTrackerValue.punkVal->QueryInterface(    IID_IEnumTfPropertyValue,
                                                (void **)&pEnumPropVal);

    while(pEnumPropVal->Next(1, &tfPropertyVal, NULL) == S_OK)
    {
        BOOL fComposingValue;
        TfGuidAtom gaDispAttrValue;
        
        // Is this the composition property? 
        if (IsEqualGUID(tfPropertyVal.guidId, GUID_PROP_COMPOSING))
        {
            fComposingValue = (BOOL)tfPropertyVal.varValue.lVal;
        }
        // Or is this the attribute property? 
        else if (IsEqualGUID(tfPropertyVal.guidId, GUID_PROP_ATTRIBUTE))
        {
            gaDispAttrValue = (TfGuidAtom)tfPropertyVal.varValue.lVal;
        }
        
        // Clear the property. 
        VariantClear(&tfPropertyVal.varValue);
    }

    // Clear the tracker property. 
    VariantClear(&varTrackerValue);

    // Release the property enumerator. 
    pEnumPropVal->Release();

    // Release the range. 
    pRangeValue->Release();
}

// Release the selection range. 
sel.range->Release();

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête msctf.h
DLL Msctf.dll
Composant redistribuable TSF 1.0 sur Windows 2000 Professionnel

Voir aussi

IEnumTfPropertyValue

ITfContext

ITfContext::GetProperty

ITfReadOnlyProperty