Freigeben über


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
S_OK
Die Methode war erfolgreich.
TF_E_DISCONNECTED
Das Kontextobjekt befindet sich nicht in einem Dokumentstapel.
E_OUTOFMEMORY
Ein Fehler bei der Speicherzuordnung ist aufgetreten.
E_INVALIDARG
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

Weitere Informationen

IEnumTfPropertyValue

ITfContext

ITfContext::GetProperty

ITfReadOnlyProperty