Compartilhar via


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

Obtém uma propriedade especial que pode enumerar várias propriedades em vários intervalos.

Sintaxe

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

Parâmetros

[in] prgProp

Contém uma matriz de identificadores de propriedade que especificam as propriedades a serem rastreadas.

[in] cProp

Contém o número de identificadores de propriedade na matriz prgProp .

[in] prgAppProp

Contém uma matriz de identificadores de propriedade de aplicativo que especificam as propriedades do aplicativo a serem rastreadas.

[in] cAppProp

Contém o número de identificadores de propriedade do aplicativo na matriz prgAppProp .

[out] ppProperty

Ponteiro para um ponteiro de interface ITfReadOnlyProperty que recebe a propriedade de acompanhamento.

Valor retornado

Esse método pode retornar um desses valores.

Valor Descrição
S_OK
O método foi bem-sucedido.
TF_E_DISCONNECTED
O objeto de contexto não está em uma pilha de documentos.
E_OUTOFMEMORY
Ocorreu uma falha de alocação de memória.
E_INVALIDARG
Um ou mais parâmetros são inválidos.

Comentários

Esse método é usado para identificar rapidamente intervalos com valores de propriedade consistentes para várias propriedades. Embora esse método possa ser duplicado usando apenas o método ITfContext::GetProperty , o gerenciador do TSF pode realizar essa tarefa mais rapidamente.

A propriedade obtida por esse método é um tipo VT_UNKNOWN. Essa propriedade pode ser usada para obter um enumerador IEnumTfPropertyValue chamando o método QueryInterface com IID_IEnumTfPropertyValue. Esse enumerador contém valores de propriedade especificados por prgProp e prgAppProp.

Exemplos


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();

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho msctf.h
DLL Msctf.dll
Redistribuível TSF 1.0 no Windows 2000 Professional

Confira também

IEnumTfPropertyValue

ITfContext

ITfContext::GetProperty

ITfReadOnlyProperty