IInkAnalyzer::GetRootNode-Methode

Ruft den IContextNode-Stamm 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 – Ink-Analyse.

Hinweise

Achtung

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

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

Beispiele

Das folgende Beispiel zeigt eine Methode, die die IContextNode-Ergebnisstruktur des Ink-Analysetools durchläuft. Wenn der IInkAnlyzer derzeit keine Freihandanalyse durchführt, führt die Methode folgende Schritte aus.

  • Ruft die oberste Erkennungszeichenfolge ab.
  • Ruft den Stammknoten des Ink-Analysetools ab.
  • Ruft die Hilfsmethode ExploreContextNode auf, um 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 Nur Desktop-Apps der XP Tablet PC Edition []
Unterstützte Mindestversion (Server)
Nicht unterstützt
Header
IACom.h (erfordert auch IACom _ i.c)
DLL
IACom.dll

Siehe auch

IInkAnalyzer

IContextNode

Kontextknotentypen

Referenz zur Ink-Analyse