Freigeben über


IInkAnalyzer::GetRootNode-Methode

Ruft den Stamm-IContextNode der Kontextstruktur des IInkAnalyzer-Objekts ab.

Syntax

HRESULT GetRootNode(
  [out] IContextNode **ppRootNode
);

Parameter

ppRootNode [out]

Der Stamm-IContextNode der Kontextstruktur des IInkAnalyzer-Objekts .

Rückgabewert

Eine Beschreibung der Rückgabewerte finden Sie unter Klassen und Schnittstellen – Freihandanalyse.

Bemerkungen

Achtung

Um einen Speicherverlust zu vermeiden, rufen Sie IUnknown::Release auf ppRootNode auf, wenn Sie den Stammknoten nicht mehr verwenden müssen.

Der IInkAnalyzer verwaltet eine Struktur von IContextNode-Objekten . Diese Objekte enthalten sowohl Eingaben für die Analyse als auch die Ergebnisse der Analyse. Wenn dem IInkAnalyzer anfänglich Striche hinzugefügt werden, weist der IInkAnalyzer sie einem IContextNode des Typs UnclassifiedInk zu (siehe IContextNode::GetType und Kontextknotentypen). Nachdem die Striche analysiert wurden, weist der IInkAnalyzer sie den entsprechenden IContextNode-Objekten in der Struktur zu. Weitere Informationen zur Verwendung von IInkAnalyzer zum Analysieren von Freihandeingaben finden Sie unter Übersicht über die Freihandanalyse.

Beispiele

Das folgende Beispiel zeigt eine Methode, die die IContextNode-Ergebnisstruktur des Freihandanalysetools durchläuft. Wenn der IInkAnlyzer derzeit keine Freihandanalyse ausführt, führt die -Methode folgendes aus.

  • Ruft die oberste Erkennungszeichenfolge ab.
  • Ruft den Stammknoten der Freihandanalyse ab.
  • Ruft die Hilfsmethode auf, ExploreContextNodeum den Stammknoten und seine untergeordneten Knoten zu untersuchen.
// Helper method that explores the current analysis results of an ink analyzer.
HRESULT CMyClass::ExploreAnalysisResults(
    IInkAnalyzer *pInkAnalyzer)
{
    // Check that the ink analyzer is not currently analyzing ink.
    VARIANT_BOOL bIsAnalyzing;
    HRESULT hr = pInkAnalyzer->IsAnalyzing(&bIsAnalyzing);

    if (SUCCEEDED(hr))
    {
        if (bIsAnalyzing)
        {
            return E_PENDING;
        }

        // Get the ink analyzer's best-result string.
        BSTR recognizedString = NULL;
        hr = pInkAnalyzer->GetRecognizedString(&recognizedString);

        if (SUCCEEDED(hr))
        {
            // Insert code that records the ink analyzer's best-result string here.

            // Get the ink analyzer's root node.
            IContextNode *pRootNode = NULL;
            hr = pInkAnalyzer->GetRootNode(&pRootNode);

            if (SUCCEEDED(hr))
            {
                // Call a helper method that recursively explores context
                // nodes and their subnodes.
                hr = this->ExploreContextNode(pRootNode);
            }

            // Release this reference to the root node.
            if (pRootNode != NULL)
            {
                pRootNode->Release();
                pRootNode = NULL;
            }
        }

        // Free the system resources for the recognized string.
        SysFreeString(recognizedString);
    }

    return hr;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows XP Tablet PC Edition [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Nicht unterstützt
Header
IACom.h (erfordert auch IACom_i.c)
DLL
IACom.dll

Siehe auch

IInkAnalyzer

IContextNode

Kontextknotentypen

Freihandanalysereferenz