Поделиться через


Метод ITfContext::TrackProperties (msctf.h)

Получает специальное свойство, которое может перечислять несколько свойств в нескольких диапазонах.

Синтаксис

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

Параметры

[in] prgProp

Содержит массив идентификаторов свойств, указывающих отслеживаемые свойства.

[in] cProp

Содержит количество идентификаторов свойств в массиве prgProp .

[in] prgAppProp

Содержит массив идентификаторов свойств приложения, указывающих отслеживаемые свойства приложения.

[in] cAppProp

Содержит количество идентификаторов свойств приложения в массиве prgAppProp .

[out] ppProperty

Указатель на указатель интерфейса ITfReadOnlyProperty , который получает свойство отслеживания.

Возвращаемое значение

Этот метод может возвращать одно из этих значений.

Значение Описание
S_OK
Метод выполнен успешно.
TF_E_DISCONNECTED
Объект контекста не находится в стеке документов.
E_OUTOFMEMORY
Произошел сбой выделения памяти.
E_INVALIDARG
Один или несколько параметров являются недопустимыми.

Комментарии

Этот метод используется для быстрого определения диапазонов с согласованными значениями свойств для нескольких свойств. Хотя этот метод можно дублировать с помощью только метода ITfContext::GetProperty , диспетчер TSF может выполнить эту задачу быстрее.

Свойство, полученное этим методом, является VT_UNKNOWN типом. Это свойство можно использовать для получения перечислителя IEnumTfPropertyValue путем вызова метода QueryInterface с IID_IEnumTfPropertyValue. Этот перечислитель содержит значения свойств, заданные prgProp и prgAppProp.

Примеры


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

Требования

   
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header msctf.h
DLL Msctf.dll
Распространяемые компоненты TSF 1.0 в Windows 2000 Профессиональная

См. также раздел

IEnumTfPropertyValue

ITfContext

ITfContext::GetProperty

ITfReadOnlyProperty