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
IACom.h (erfordert auch IACom_i.c)
DLL
IACom.dll

Siehe auch

IContextNodes

Kontextknotentypen

IInkAnalyzer

Freihandanalysereferenz