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

Siehe auch

IContextNodes

Kontextknotentypen

IInkAnalyzer

Referenz zur Ink-Analyse