IContextNode-Schnittstelle
Stellt einen Knoten in einer Struktur von -Objekten dar, die im Rahmen der Ink-Analyse erstellt werden.
Member
Die IContextNode-Schnittstelle erbt von der IUnknown-Schnittstelle. IContextNode verfügt auch über diese Typen von Membern:
Methoden
Die IContextNode-Schnittstelle verfügt über diese Methoden.
| Methode | Beschreibung |
|---|---|
| AddContextLink | Fügt der Kontextlinksammlung des IContextNode-Objekts einen neuen IContextLink hinzu. |
| Addpropertydata | Fügt anwendungsspezifische Daten hinzu. |
| Bestätigen | Ändert den Bestätigungstyp, der steuert, was das IInkAnalyzer-Objekt über den IContextNode ändern kann. |
| Containspropertydata | Bestimmt, ob das IContextNode-Objekt Unter dem angegebenen Bezeichner gespeicherte Daten enthält. |
| 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 Linksammlung 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 Verwendung des angegebenen Bezeichners ab. |
| GetPropertyDataIds | Ruft die Bezeichner ab, für die Eigenschaftsdaten enthalten 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 durch einen Indexwert im IContextNode-Objekt verwiesen wird. |
| GetStrokeIds | Ruft ein Array von Bezeichnern für die Striche im IContextNode-Objekt ab. |
| GetStrokePacketDataById | Ruft ein Array ab, das die Paketeigenschaftsdaten für den angegebenen Strich enthält. |
| GetStrokePacketDescriptionById | Ruft ein Array ab, das die Paketeigenschaftsbezeichner 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 für Menschen 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ätigten IContextNode-Objekte nicht ändern. |
| LoadPropertiesData | Erstellt die anwendungsspezifischen und internen Eigenschaftsdaten für ein Bytearray neu, das zuvor mit IContextNode::SavePropertiesData erstellt wurde. |
| MoveSubNodeToPosition | Ordnet ein angegebenes untergeordnetes IContextNode-Objekt dem angegebenen Index neu an. |
| RemovePropertyData | Entfernt anwendungsspezifische Daten. |
| Wiedervererbung | Verschiebt dieses IContextNode-Objekt aus der Subknotensammlung des übergeordneten Kontextknotens in die Auflistung der untergeordneten Knoten des angegebenen Kontextknotens. |
| ReparentStrokeByIdToNode | Verschiebt Strichdaten von diesem IContextNode in den angegebenen IContextNode. |
| SavePropertiesData | Ruft ein Bytearray ab, das die anwendungsspezifischen und internen Eigenschaftsdaten für diesen IContextNode enthält. |
| SetLocation | Aktualisiert 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. |
Hinweise
Die Knotentypen werden in den Konstanten Kontextknotentypen 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 Ink-, Analysehinweis- oder benutzerdefinierter Recognizer-Knoten ist, ruft er eine Hilfsmethode auf, um bestimmte Eigenschaften des Knotentyps zu untersuchen.
- Wenn der Knoten Unterknoten enthält, untersucht er jeden Unterknoten, indem er sich selbst aufruft.
- Wenn der Knoten ein Ink-Blattknoten ist, werden die Strichdaten für den Knoten durch Aufrufen einer Hilfsmethode untersucht.
Mit der Ihe InkAnalysis-API können Sie einen Zeilenknoten erstellen, der Ink-Wörter und Textwörter enthält. Der Parser ignoriert diese gemischten Knoten jedoch und behandelt sie wie Fremdknoten. Dies wirkt sich auf die Analysegenauigkeit der Erkennung von Ink-Anmerkungen aus, wenn der Endbenutzer auf diesen gemischten Knoten schreibt oder um ihn herum 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 Nur Desktop-Apps der XP Tablet PC Edition [] |
| Unterstützte Mindestversion (Server) |
Nicht unterstützt |
| Header |
|
| DLL |
|