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 |
---|---|
|
메서드를 성공적으로 수행했습니다. |
|
컨텍스트 개체가 문서 스택에 없습니다. |
|
메모리 할당 오류가 발생했습니다. |
|
하나 이상의 매개 변수가 잘못되었습니다. |
설명
이 메서드는 여러 속성에 대해 일관된 속성 값이 있는 범위를 빠르게 식별하는 데 사용됩니다. 이 메서드는 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 |