Método IContextNodes::GetContextNode
Recupera el objeto IContextNode en el índice especificado de esta colección.
Sintaxis
HRESULT GetContextNode(
[in] ULONG ulIndex,
[out] IContextNode **ppContextNode
);
Parámetros
-
ulIndex [in]
-
Índice de base cero del objeto IContextNode que se va a obtener.
-
ppContextNode [out]
-
Puntero al IContextNode al que se hace referencia en el índice especificado.
Valor devuelto
Para obtener una descripción de los valores devueltos, vea Clases e interfaces : análisis de entrada de lápiz.
Observaciones
Precaución
Para evitar una pérdida de memoria, llame a IUnknown::Release en *ppContextNode cuando ya no necesite usar el nodo de contexto.
Ejemplos
En este ejemplo se muestra un método, ExploreContextNode
, que examina un IContextNode. El método hace lo siguiente:
- Obtiene el tipo del nodo de contexto.
- Examina propiedades específicas del tipo de nodo mediante una llamada a un método auxiliar, si el nodo de contexto es una entrada de lápiz sin clasificar, una sugerencia de análisis o un nodo de reconocedor personalizado.
- Examina cada subnodo llamando a sí mismo, si el nodo tiene subnodos.
- Examina los datos de trazo del nodo mediante una llamada a un método auxiliar, si el nodo es un nodo hoja de lápiz.
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 |
|