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 |
|
Archivo DLL |
|