Interface IContextNode

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

Membres

L’interface IContextNode hérite de l’interface IUnknown. IContextNode a également les types de membres suivants :

Méthodes

L’interface IContextNode a ces méthodes.

Méthode Description
AddContextLink Ajoute un nouvel IContextLink à la collection de liens de contexte de l’objet IContextNode .
AddPropertyData Ajoute un élément de données spécifiques à l’application.
Confirmer Modifie le type de confirmation, qui contrôle ce que l’objet IInkAnalyzer peut modifier sur l’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 les 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 de 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 paquet pour le trait spécifié.
GetStrokePacketDescriptionById Récupère un tableau contenant les identificateurs de propriété de paquet 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’utilisateur 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é internes et spécifiques à l’application pour un tableau d’octets créé précédemment avec IContextNode::SavePropertiesData.
MoveSubNodeToPosition Réorganise un objet IContextNode enfant spécifié à l’index spécifié.
RemovePropertyData Supprime un élément de données spécifiques à l’application.
Réparent Déplace cet objet IContextNode de la collection de sous-nœuds de son 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 cet IContextNode vers l’IContextNode spécifié.
SavePropertiesData Récupère un tableau d’octets qui contient les données de propriété interne et spécifiques à l’application pour cet IContextNode.
SetLocation Mises à jour la position et la taille de cet IContextNode.
SetPartiallyPopulated Modifie la valeur qui indique si ce IContextNode est partiellement ou entièrement rempli.
SetStrokes Associe les traits spécifiés à cet 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 une entrée manuscrite non classifiée, un indicateur d’analyse ou un 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 s’appelant lui-même.
  • Si le nœud est un nœud feuille manuscrite, il examine les données de trait pour le 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 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 de l’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 Édition Tablette PC [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 de l’encre