ITfContext::TrackProperties-Methode (msctf.h)
Ruft eine spezielle Eigenschaft ab, die mehrere Eigenschaften über mehrere Bereiche auflisten kann.
Syntax
HRESULT TrackProperties(
[in] const GUID **prgProp,
[in] ULONG cProp,
[in] const GUID **prgAppProp,
[in] ULONG cAppProp,
[out] ITfReadOnlyProperty **ppProperty
);
Parameter
[in] prgProp
Enthält ein Array von Eigenschaftenbezeichnern, die die zu verfolgenden Eigenschaften angeben.
[in] cProp
Enthält die Anzahl der Eigenschaftsbezeichner im prgProp-Array .
[in] prgAppProp
Enthält ein Array von Anwendungseigenschaftenbezeichnern, die die nachzuverfolgenden Anwendungseigenschaften angeben.
[in] cAppProp
Enthält die Anzahl der Anwendungseigenschaftenbezeichner im prgAppProp-Array .
[out] ppProperty
Zeiger auf einen ITfReadOnlyProperty-Schnittstellenzeiger , der die Nachverfolgungseigenschaft empfängt.
Rückgabewert
Diese Methode kann einen dieser Werte zurückgeben.
Wert | BESCHREIBUNG |
---|---|
|
Die Methode war erfolgreich. |
|
Das Kontextobjekt befindet sich nicht in einem Dokumentstapel. |
|
Ein Fehler bei der Speicherzuordnung ist aufgetreten. |
|
Mindestens ein Parameter ist ungültig. |
Hinweise
Diese Methode wird verwendet, um Bereiche mit konsistenten Eigenschaftenwerten für mehrere Eigenschaften schnell zu identifizieren. Obwohl diese Methode nur mit der ITfContext::GetProperty-Methode dupliziert werden konnte, kann der TSF-Manager diese Aufgabe schneller erledigen.
Die von dieser Methode abgerufene Eigenschaft ist ein VT_UNKNOWN Typ. Diese Eigenschaft kann verwendet werden, um einen IEnumTfPropertyValue-Enumerator abzurufen, indem die QueryInterface-Methode mit IID_IEnumTfPropertyValue aufgerufen wird. Dieser Enumerator enthält Eigenschaftswerte, die von prgProp und prgAppProp angegeben werden.
Beispiele
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();
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | msctf.h |
DLL | Msctf.dll |
Verteilbare Komponente | TSF 1.0 unter Windows 2000 Professional |