IContextNode-Schnittstelle
Stellt einen Knoten in einer Struktur von Objekten dar, die im Rahmen der Freihandanalyse erstellt werden.
Member
Die IContextNode-Schnittstelle erbt von der IUnknown-Schnittstelle . IContextNode verfügt auch über folgende Membertypen:
Methoden
Die IContextNode-Schnittstelle verfügt über diese Methoden.
Methode | BESCHREIBUNG |
---|---|
AddContextLink | Fügt der Kontextlinkauflistung des IContextNode-Objekts einen neuen IContextLink hinzu. |
Addpropertydata | Fügt einen Teil anwendungsspezifischer Daten hinzu. |
Bestätigen | Ändert den Bestätigungstyp, der steuert, was das IInkAnalyzer-Objekt am IContextNode ändern kann. |
Containspropertydata | Bestimmt, ob das IContextNode-Objekt Daten enthält, die unter dem angegebenen Bezeichner gespeichert sind. |
CreatePartiallyPopulatedSubNode | Erstellt ein untergeordnetes IContextNode-Objekt , das nur Informationen zu Typ, Bezeichner und Speicherort enthält. |
CreateSubNode | Erstellt ein neues untergeordnetes IContextNode-Objekt . |
DeleteContextLink | Löscht ein IContextLink-Objekt aus der Linkauflistung des IContextNode-Objekts . |
DeleteSubNode | Entfernt einen untergeordneten IContextNode. |
GetContextLinks | Ruft eine Auflistung von IContextLink-Objekten ab, die Beziehungen mit anderen IContextNode-Objekten darstellt. |
Getid | Ruft den Bezeichner für das IContextNode-Objekt ab. |
Getlocation | Ruft die Position und Größe des IContextNode-Objekts ab. |
GetParentNode | Ruft den übergeordneten Knoten dieses IContextNode in der Kontextknotenstruktur ab. |
GetPartiallyPopulated | Ruft den Wert ab, der angibt, ob ein IContextNode-Objekt teilweise oder vollständig aufgefüllt ist. |
Getpropertydata | Ruft anwendungsspezifische Daten oder andere Eigenschaftsdaten unter Berücksichtigung des angegebenen Bezeichners ab. |
GetPropertyDataIds | Ruft die Bezeichner ab, für die Eigenschaftendaten vorhanden sind. |
GetStrokeCount | Ruft die Anzahl der Striche ab, die dem IContextNode-Objekt zugeordnet sind. |
GetStrokeId | Ruft den Strichbezeichner für den Strich ab, auf den ein Indexwert innerhalb des IContextNode-Objekts verweist. |
GetStrokeIds | Ruft ein Array von Bezeichnern für die Striche im IContextNode-Objekt ab. |
GetStrokePacketDataById | Ruft ein Array ab, das die Paketeigenschaftendaten für den angegebenen Strich enthält. |
GetStrokePacketDescriptionById | Ruft ein Array ab, das die Paketeigenschaftenbezeichner für den angegebenen Strich enthält. |
GetSubNodes | Ruft die direkten untergeordneten Knoten des IContextNode-Objekts ab. |
Gettype | Ruft den Typ des IContextNode-Objekts ab. |
GetTypeName | Ruft einen lesbaren Typnamen dieses IContextNode ab. |
IsConfirmed | Ruft einen Wert ab, der angibt, ob das IContextNode-Objekt bestätigt wird.
IInkAnalyzer kann den Knotentyp und die zugeordneten Striche für bestätigte IContextNode-Objekte nicht ändern. |
LoadPropertiesData | Erstellt die anwendungsspezifischen und internen Eigenschaftendaten für ein Array von Bytes neu, das zuvor mit IContextNode::SavePropertiesData erstellt wurde. |
MoveSubNodeToPosition | Ordnet ein angegebenes untergeordnetes IContextNode-Objekt dem angegebenen Index neu an. |
RemovePropertyData | Entfernt einen Teil anwendungsspezifischer Daten. |
Erneutes Ausschreiben | Verschiebt dieses IContextNode-Objekt aus der Unterknotenauflistung des übergeordneten Kontextknotens in die Unterknotenauflistung des angegebenen Kontextknotens. |
ReparentStrokeByIdToNode | Verschiebt Strichdaten aus diesem IContextNode in den angegebenen IContextNode. |
SavePropertiesData | Ruft ein Bytearray ab, das die anwendungsspezifischen und internen Eigenschaftendaten für diesen IContextNode enthält. |
SetLocation | Updates die Position und Größe dieses IContextNode. |
SetPartiallyPopulated | Ändert den Wert, der angibt, ob dieser IContextNode teilweise oder vollständig aufgefüllt ist. |
SetStrokes | Ordnet diesem IContextNode die angegebenen Striche zu. |
Bemerkungen
Die Knotentypen werden in den Kontextknotentypen-Konstanten beschrieben.
Beispiele
Das folgende Beispiel zeigt eine Methode, die einen IContextNode untersucht. Die -Methode führt Folgendes aus:
- Ruft den Typ des Kontextknotens ab. Wenn der Kontextknoten ein nicht klassifizierter Freihand-, Analysehinweis- oder benutzerdefinierter Erkennungsknoten ist, ruft er eine Hilfsmethode auf, um bestimmte Eigenschaften des Knotentyps zu untersuchen.
- Wenn der Knoten Über Unterknoten verfügt, untersucht er jeden Unterknoten, indem er sich selbst aufruft.
- Wenn es sich bei dem Knoten um einen Freihandblattknoten handelt, werden die Strichdaten für den Knoten durch Aufrufen einer Hilfsmethode untersucht.
Mit der Ihe InkAnalysis-API können Sie einen Zeilenknoten erstellen, der Freihand- und Textwörter enthält. Der Parser ignoriert diese gemischten Knoten jedoch und behandelt sie wie fremdartige Knoten. Dies wirkt sich auf die Analysegenauigkeit der Erkennung von Freihandanmerkungen aus, wenn der Endbenutzer auf oder um diesen gemischten Knoten schreibt.
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 |
|