Método ITfContext::TrackProperties (msctf.h)
Obtiene una propiedad especial que puede enumerar varias propiedades en varios intervalos.
Sintaxis
HRESULT TrackProperties(
[in] const GUID **prgProp,
[in] ULONG cProp,
[in] const GUID **prgAppProp,
[in] ULONG cAppProp,
[out] ITfReadOnlyProperty **ppProperty
);
Parámetros
[in] prgProp
Contiene una matriz de identificadores de propiedad que especifican las propiedades de las que se va a realizar el seguimiento.
[in] cProp
Contiene el número de identificadores de propiedad en la matriz prgProp .
[in] prgAppProp
Contiene una matriz de identificadores de propiedad de aplicación que especifican las propiedades de la aplicación de las que se va a realizar el seguimiento.
[in] cAppProp
Contiene el número de identificadores de propiedad de aplicación en la matriz prgAppProp .
[out] ppProperty
Puntero a un puntero de interfaz ITfReadOnlyProperty que recibe la propiedad de seguimiento.
Valor devuelto
Este método puede devolver uno de estos valores.
Valor | Descripción |
---|---|
|
Método realizado correctamente. |
|
El objeto de contexto no está en una pila de documentos. |
|
Error de asignación de memoria. |
|
Uno o varios parámetros no son válidos. |
Comentarios
Este método se usa para identificar rápidamente intervalos con valores de propiedad coherentes para varias propiedades. Aunque este método podría duplicarse usando solo el método ITfContext::GetProperty , el administrador de TSF puede realizar esta tarea más rápidamente.
La propiedad obtenida por este método es un tipo VT_UNKNOWN. Esta propiedad se puede usar para obtener un enumerador IEnumTfPropertyValue llamando al método QueryInterface con IID_IEnumTfPropertyValue. Este enumerador contiene valores de propiedad especificados por prgProp y prgAppProp.
Ejemplos
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 compatible | Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | msctf.h |
Archivo DLL | Msctf.dll |
Redistribuible | TSF 1.0 en Windows 2000 Professional |