Interfaccia IContextNode

Rappresenta un nodo in un albero di oggetti creati come parte dell'analisi dell'input penna.

Membri

L'interfaccia IContextNode eredita dall'interfaccia IUnknown . IContextNode include anche questi tipi di membri:

Metodi

L'interfaccia IContextNode include questi metodi.

Metodo Descrizione
AddContextLink Aggiunge un nuovo IContextLink all'insieme di collegamenti di contesto dell'oggetto IContextNode .
AddPropertyData Aggiunge una parte di dati specifici dell'applicazione.
Confirm Modifica il tipo di conferma, che controlla quale oggetto IInkAnalyzer può modificare sull'oggetto IContextNode.
ContienePropertyData Determina se l'oggetto IContextNode contiene dati archiviati nell'identificatore specificato.
CreatePartiallyPopulatedSubNode Crea un oggetto IContextNode figlio che contiene solo informazioni su tipo, identificatore e posizione.
CreateSubNode Crea un nuovo oggetto IContextNode figlio.
DeleteContextLink Elimina un oggetto IContextLink dall'insieme di collegamenti dell'oggetto IContextNode .
DeleteSubNode Rimuove un IContextNode figlio.
GetContextLinks Recupera un insieme di oggetti IContextLink che rappresenta le relazioni con altri oggetti IContextNode .
GetId Recupera l'identificatore per l'oggetto IContextNode .
GetLocation Recupera la posizione e le dimensioni dell'oggetto IContextNode .
GetParentNode Recupera il nodo padre di questo IContextNode nell'albero dei nodi del contesto.
GetPartiallyPopulated Recupera il valore che indica se un oggetto IContextNode è parzialmente popolato o completamente popolato.
GetPropertyData Recupera i dati specifici dell'applicazione o altri dati delle proprietà in base all'identificatore specificato.
GetPropertyDataIds Recupera gli identificatori per i quali sono presenti dati delle proprietà.
GetStrokeCount Recupera il numero di tratti associati all'oggetto IContextNode .
GetStrokeId Recupera l'identificatore del tratto per il tratto a cui fa riferimento un valore di indice all'interno dell'oggetto IContextNode .
GetStrokeIds Recupera una matrice di identificatori per i tratti all'interno dell'oggetto IContextNode .
GetStrokePacketDataById Recupera una matrice contenente i dati delle proprietà del pacchetto per il tratto specificato.
GetStrokePacketDescriptionById Recupera una matrice contenente gli identificatori di proprietà del pacchetto per il tratto specificato.
GetSubNodes Recupera i nodi figlio diretti dell'oggetto IContextNode .
GetType Recupera il tipo dell'oggetto IContextNode .
GetTypeName Recupera un nome di tipo leggibile dall'utente di questo IContextNode.
Is Confirm Recupera un valore che indica se l'oggetto IContextNode viene confermato. IInkAnalyzer non può modificare il tipo di nodo e i tratti associati per gli oggetti IContextNode confermati.
LoadPropertiesData Ricrea i dati delle proprietà interne e specifici dell'applicazione per una matrice di byte creati in precedenza con IContextNode::SavePropertiesData.
MoveSubNodeToPosition Riordina un oggetto IContextNode figlio specificato nell'indice specificato.
RemovePropertyData Rimuove una parte di dati specifici dell'applicazione.
Reparent Sposta questo oggetto IContextNode dall'insieme sottonodi del nodo del contesto padre all'insieme sottonodi del nodo di contesto specificato.
ReparentStrokeByIdToNode Sposta i dati del tratto da questo IContextNode all'oggetto IContextNode specificato.
SavePropertiesData Recupera una matrice di byte che contiene i dati delle proprietà interne e specifici dell'applicazione per questo IContextNode.
SetLocation Aggiornamenti la posizione e le dimensioni di questo IContextNode.
SetPartiallyPopulated Modifica il valore che indica se questo IContextNode è parzialmente o completamente popolato.
SetStrokes Associa i tratti specificati a questo IContextNode.

Commenti

I tipi di nodi sono descritti nelle costanti Tipi di nodo di contesto .

Esempio

Nell'esempio seguente viene illustrato un metodo che esamina un IContextNode; il metodo esegue le operazioni seguenti:

  • Ottiene il tipo del nodo di contesto. Se il nodo di contesto è un nodo input penna non classificato, hint di analisi o nodo riconoscimento personalizzato, chiama un metodo helper per esaminare proprietà specifiche del tipo di nodo.
  • Se il nodo ha sottonoti, esamina ogni sottonodeo chiamando se stesso.
  • Se il nodo è un nodo foglia penna, esamina i dati del tratto per il nodo chiamando un metodo helper.

L'API InkAnalysis consente di creare un nodo di riga contenente parole penna e parole di testo. Tuttavia, il parser ignora questi nodi misti e li considera come nodi stranieri. Ciò avrà effetto sull'accuratezza dell'analisi del rilevamento delle annotazioni dell'input penna quando l'utente finale scrive in o intorno a questo nodo misto.

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

Requisiti

Requisito Valore
Client minimo supportato
Windows XP Tablet PC Edition [solo app desktop]
Server minimo supportato
Nessuno supportato
Intestazione
IACom.h (richiede anche IACom_i.c)
DLL
IACom.dll

Vedi anche

IContextNodes

Tipi di nodo di contesto

IInkAnalyzer

Riferimento all'analisi dell'input penna