다음을 통해 공유


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 인터페이스 포인터에 대한 포인터입니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

Description
S_OK
메서드를 성공적으로 수행했습니다.
TF_E_DISCONNECTED
컨텍스트 개체가 문서 스택에 없습니다.
E_OUTOFMEMORY
메모리 할당 오류가 발생했습니다.
E_INVALIDARG
하나 이상의 매개 변수가 잘못되었습니다.

설명

이 메서드는 여러 속성에 대해 일관된 속성 값이 있는 범위를 빠르게 식별하는 데 사용됩니다. 이 메서드는 ITfContext::GetProperty 메서드만 사용하여 복제할 수 있지만 TSF 관리자는 이 작업을 더 빠르게 수행할 수 있습니다.

이 메서드에서 가져온 속성은 VT_UNKNOWN 형식입니다. 이 속성은 IID_IEnumTfPropertyValue 사용하여 QueryInterface 메서드를 호출하여 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 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 msctf.h
DLL Msctf.dll
재배포 가능 파일 Windows 2000 Professional의 TSF 1.0

참고 항목

IEnumTfPropertyValue

ITfContext

ITfContext::GetProperty

ITfReadOnlyProperty