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,
ExploreContextNode
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 XP Tablet PC Edition [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Nicht unterstützt |
Header |
|
DLL |
|