Interfaz IContextNode

Representa un nodo de un árbol de objetos creados como parte del análisis de entrada de lápiz.

Miembros

La interfaz IContextNode hereda de la interfaz IUnknown . IContextNode también tiene estos tipos de miembros:

Métodos

La interfaz IContextNode tiene estos métodos.

Método Descripción
AddContextLink Agrega un nuevo IContextLink a la colección de vínculos de contexto del objeto IContextNode .
AddPropertyData Agrega un fragmento de datos específicos de la aplicación.
Confirmar Modifica el tipo de confirmación, que controla lo que el objeto IInkAnalyzer puede cambiar sobre IContextNode.
ContainsPropertyData Determina si el objeto IContextNode contiene datos almacenados en el identificador especificado.
CreatePartiallyPopulatedSubNode Crea un objeto IContextNode secundario que contiene solo información sobre el tipo, el identificador y la ubicación.
CreateSubNode Crea un nuevo objeto IContextNode secundario.
DeleteContextLink Elimina un objeto IContextLink de la colección de vínculos del objeto IContextNode .
DeleteSubNode Quita un IContextNode secundario.
GetContextLinks Recupera una colección de objetos IContextLink que representa las relaciones con otros objetos IContextNode .
GetId Recupera el identificador del objeto IContextNode .
GetLocation Recupera la posición y el tamaño del objeto IContextNode .
GetParentNode Recupera el nodo primario de este IContextNode en el árbol de nodos de contexto.
GetPartiallyPopulated Recupera el valor que indica si un objeto IContextNode está parcialmente rellenado o completamente rellenado.
GetPropertyData Recupera datos específicos de la aplicación u otros datos de propiedad según el identificador especificado.
GetPropertyDataIds Recupera los identificadores para los que hay datos de propiedad.
GetStrokeCount Recupera el número de trazos asociados al objeto IContextNode .
GetStrokeId Recupera el identificador de trazo del trazo al que hace referencia un valor de índice dentro del objeto IContextNode .
GetStrokeIds Recupera una matriz de identificadores para los trazos dentro del objeto IContextNode .
GetStrokePacketDataById Recupera una matriz que contiene los datos de propiedad del paquete para el trazo especificado.
GetStrokePacketDescriptionById Recupera una matriz que contiene los identificadores de propiedad de paquete para el trazo especificado.
GetSubNodes Recupera los nodos secundarios directos del objeto IContextNode .
Gettype Recupera el tipo del objeto IContextNode .
GetTypeName Recupera un nombre de tipo legible de este IContextNode.
IsConfirmed Recupera un valor que indica si se confirma el objeto IContextNode . IInkAnalyzer no puede cambiar el tipo de nodo y los trazos asociados para los objetos IContextNode confirmados.
LoadPropertiesData Vuelve a crear los datos de propiedades internas y específicas de la aplicación para una matriz de bytes que se creó anteriormente con IContextNode::SavePropertiesData.
MoveSubNodeToPosition Reordena un objeto IContextNode secundario especificado en el índice especificado.
RemovePropertyData Quita un fragmento de datos específicos de la aplicación.
Reparente Mueve este objeto IContextNode de la colección de subnodos del nodo de contexto primario a la colección de subnodos del nodo de contexto especificado.
ReparentStrokeByIdToNode Mueve los datos de trazo de este IContextNode al IContextNode especificado.
SavePropertiesData Recupera una matriz de bytes que contiene los datos de propiedad internos y específicos de la aplicación para este IContextNode.
SetLocation Novedades la posición y el tamaño de este IContextNode.
SetPartiallyPopulated Modifica el valor que indica si este IContextNode está rellenado parcialmente o completamente.
SetStrokes Asocia los trazos especificados a este IContextNode.

Comentarios

Los tipos de nodos se describen en las constantes Tipos de nodo de contexto .

Ejemplos

En el ejemplo siguiente se muestra un método que examina un IContextNode; el método hace lo siguiente:

  • Obtiene el tipo del nodo de contexto. Si el nodo de contexto es un nodo de entrada manuscrita, sugerencia de análisis o reconocedor personalizado, llama a un método auxiliar para examinar propiedades específicas del tipo de nodo.
  • Si el nodo tiene subnodos, examina cada subnodo llamando a sí mismo.
  • Si el nodo es un nodo de hoja de lápiz, examina los datos del trazo del nodo llamando a un método auxiliar.

Ihe InkAnalysis API permite crear un nodo de línea que contenga palabras manuscritas y palabras de texto. Sin embargo, el analizador omitirá estos nodos mixtos y los tratará como nodos externos. Esto afectará a la precisión del análisis de la detección de anotaciones de entrada de lápiz cuando el usuario final escribe en o alrededor de este nodo mixto.

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

Requisitos

Requisito Value
Cliente mínimo compatible
Windows XP Tablet PC Edition [solo aplicaciones de escritorio]
Servidor mínimo compatible
No se admite ninguno
Encabezado
IACom.h (también requiere IACom_i.c)
Archivo DLL
IACom.dll

Consulte también

IContextNodes

Tipos de nodo de contexto

IInkAnalyzer

Referencia de análisis de entrada de lápiz