Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft die direkten untergeordneten Knoten des IContextNode-Objekts ab.
Syntax
HRESULT GetSubNodes(
[out] IContextNodes **ppSubContextNodes
);
Parameter
-
ppSubContextNodes [out]
-
Eine Auflistung der IContextNode-Objekte , die direkte untergeordnete Knoten dieses IContextNode sind.
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 *ppSubContextNodes auf, wenn Sie die Sammlung von Unterknoten nicht mehr verwenden müssen.
Dadurch werden nur die direkten untergeordneten Knoten zurückgegeben, nicht alle untergeordneten Knoten.
Beispiele
Dieses Beispiel zeigt die Methode , ExploreContextNodedie einen IContextNode untersucht. Die -Methode führt folgendes aus:
- Ruft den Typ des Kontextknotens ab.
- Untersucht bestimmte Eigenschaften des Knotentyps durch Aufrufen einer Hilfsmethode, wenn der Kontextknoten ein nicht klassifizierter Freihand-, Analysehinweis oder benutzerdefinierter Erkennungsknoten ist.
- Untersucht jeden Unterknoten, indem er sich selbst aufruft, wenn der Knoten Über Unterknoten verfügt.
- Untersucht die Strichdaten für den Knoten durch Aufrufen einer Hilfsmethode, wenn es sich bei dem Knoten um einen Freihandblattknoten handelt.
HRESULT CMyClass::ExploreContextNode(
IContextNode *pContextNode)
{
// Check for certain types of context nodes.
GUID ContextNodeType;
HRESULT hr = pContextNode->GetType(&ContextNodeType);
if (SUCCEEDED(hr))
{
if (IsEqualGUID(GUID_CNT_UNCLASSIFIEDINK, ContextNodeType))
{
// Call a helper method that explores unclassified ink nodes.
hr = this->ExploreUnclassifiedInkNode(pContextNode);
}
else if (IsEqualGUID(GUID_CNT_ANALYSISHINT, ContextNodeType))
{
// Call a helper method that explores analysis hint nodes.
hr = this->ExploreAnalysisHintNode(pContextNode);
}
else if (IsEqualGUID(GUID_CNT_CUSTOMRECOGNIZER, ContextNodeType))
{
// Call a helper method that explores custom recognizer nodes.
hr = this->ExploreCustomRecognizerNode(pContextNode);
}
if (SUCCEEDED(hr))
{
// Check if this node is a branch or a leaf node.
IContextNodes *pSubNodes = NULL;
hr = pContextNode->GetSubNodes(&pSubNodes);
if (SUCCEEDED(hr))
{
ULONG ulSubNodeCount;
hr = pSubNodes->GetCount(&ulSubNodeCount);
if (SUCCEEDED(hr))
{
if (ulSubNodeCount > 0)
{
// This node has child nodes; explore each child node.
IContextNode *pSubNode = NULL;
for (ULONG index=0; index<ulSubNodeCount; index++)
{
hr = pSubNodes->GetContextNode(index, &pSubNode);
if (SUCCEEDED(hr))
{
// Recursive call to explore the child node of this
// context node.
hr = this->ExploreContextNode(pSubNode);
}
// Release this reference to the child context node.
if (pSubNode != NULL)
{
pSubNode->Release();
pSubNode = NULL;
}
if (FAILED(hr))
{
break;
}
}
}
else
{
// This is a leaf node. Check if it contains stroke data.
ULONG ulStrokeCount;
hr = pContextNode->GetStrokeCount(&ulStrokeCount);
if (SUCCEEDED(hr))
{
if (ulStrokeCount > 0)
{
// This node is an ink leaf node; call helper
// method that explores available stroke data.
hr = this->ExploreNodeStrokeData(pContextNode);
}
}
}
}
}
// Release this reference to the subnodes collection.
if (pSubNodes != NULL)
{
pSubNodes->Release();
pSubNodes = NULL;
}
}
}
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 |
|