Interface IContextNode

Représente un nœud dans une arborescence d’objets créés dans le cadre de l’analyse manuscrite.

Membres

L’interface IContextNode hérite de l’interface IUnknown . IContextNode possède également ces types de membres :

Méthodes

L’interface IContextNode possède ces méthodes.

Méthode Description
AddContextLink Ajoute un nouvel IContextLink à la collection de liens de contexte de l’objet IContextNode .
AddPropertyData Ajoute une partie des données spécifiques à l’application.
Confirmer Modifie le type de confirmation, qui contrôle ce que l’objet IInkAnalyzer peut modifier sur IContextNode.
ContainsPropertyData Détermine si l’objet IContextNode contient des données stockées sous l’identificateur spécifié.
CreatePartiallyPopulatedSubNode Crée un objet IContextNode enfant qui contient uniquement des informations sur le type, l’identificateur et l’emplacement.
CreateSubNode Crée un objet IContextNode enfant.
DeleteContextLink Supprime un objet IContextLink de la collection de liens de l’objet IContextNode .
DeleteSubNode Supprime un IContextNode enfant.
GetContextLinks Récupère une collection d’objets IContextLink qui représente des relations avec d’autres objets IContextNode .
GetId Récupère l’identificateur de l’objet IContextNode .
GetLocation Récupère la position et la taille de l’objet IContextNode .
GetParentNode Récupère le nœud parent de cet IContextNode dans l’arborescence des nœuds de contexte.
GetPartiallyPopulated Récupère la valeur qui indique si un objet IContextNode est partiellement rempli ou entièrement rempli.
GetPropertyData Récupère des données spécifiques à l’application ou d’autres données de propriété en fonction de l’identificateur spécifié.
GetPropertyDataIds Récupère les identificateurs pour lesquels il existe des données de propriété.
GetStrokeCount Récupère le nombre de traits associés à l’objet IContextNode .
GetStrokeId Récupère l’identificateur de trait pour le trait référencé par une valeur d’index dans l’objet IContextNode .
GetStrokeIds Récupère un tableau d’identificateurs pour les traits dans l’objet IContextNode .
GetStrokePacketDataById Récupère un tableau contenant les données de propriété de paquets pour le trait spécifié.
GetStrokePacketDescriptionById Récupère un tableau contenant les identificateurs de propriété de paquets pour le trait spécifié.
GetSubNodes Récupère les nœuds enfants directs de l’objet IContextNode .
Gettype Récupère le type de l’objet IContextNode .
GetTypeName Récupère un nom de type lisible par l’homme de ce IContextNode.
IsConfirmed Récupère une valeur qui indique si l’objet IContextNode est confirmé. IInkAnalyzer ne peut pas modifier le type de nœud et les traits associés pour les objets IContextNode confirmés.
LoadPropertiesData Recrée les données de propriété propres à l’application et internes pour un tableau d’octets créé précédemment avec IContextNode::SavePropertiesData.
MoveSubNodeToPosition Réorganise un objet IContextNode enfant spécifié vers l’index spécifié.
RemovePropertyData Supprime une partie des données spécifiques à l’application.
Réparent Déplace cet objet IContextNode de la collection de sous-nœuds du nœud de contexte parent vers la collection de sous-nœuds du nœud de contexte spécifié.
ReparentStrokeByIdToNode Déplace les données de trait de ce IContextNode vers l’IContextNode spécifié.
SavePropertiesData Récupère un tableau d’octets qui contient les données de propriété propres à l’application et internes pour cet IContextNode.
SetLocation Met à jour la position et la taille de ce IContextNode.
SetPartiallyPopulated Modifie la valeur qui indique si ce IContextNode est partiellement ou entièrement rempli.
SetStrokes Associe les traits spécifiés à ce IContextNode.

Notes

Les types de nœuds sont décrits dans les constantes Types de nœuds de contexte .

Exemples

L’exemple suivant montre une méthode qui examine un IContextNode ; la méthode effectue les opérations suivantes :

  • Obtient le type du nœud de contexte. Si le nœud de contexte est un nœud d’encre non classé, d’analyse ou de nœud de reconnaissance personnalisé, il appelle une méthode d’assistance pour examiner des propriétés spécifiques du type de nœud.
  • Si le nœud a des sous-nœuds, il examine chaque sous-nœud en l’appelant lui-même.
  • Si le nœud est un nœud feuille manuscrite, il examine les données de trait du nœud en appelant une méthode d’assistance.

L’API Ihe InkAnalysis vous permet de créer un nœud de ligne qui contient des mots manuscrits et des mots de texte. Toutefois, l’analyseur ignore ces nœuds mixtes et les traite comme des nœuds étrangers. Cela aura un impact sur la précision d’analyse de la détection des annotations manuscrites lorsque l’utilisateur final écrit sur ou autour de ce nœud mixte.

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;
}

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP Tablet PC Edition [applications de bureau uniquement]
Serveur minimal pris en charge
Aucun pris en charge
En-tête
IACom.h (nécessite également IACom_i.c)
DLL
IACom.dll

Voir aussi

IContextNodes

Types de nœuds de contexte

IInkAnalyzer

Informations de référence sur l’analyse manuscrite