IInkAnalyzer::GetRootNode, méthode

Obtient la racine IContextNode de l’arborescence de contexte de l’objet IInkAnalyzer .

Syntaxe

HRESULT GetRootNode(
  [out] IContextNode **ppRootNode
);

Paramètres

ppRootNode [out]

IContextNode racine de l’arborescence de contexte de l’objet IInkAnalyzer.

Valeur retournée

Pour obtenir une description des valeurs renvoyées, consultez Classes et interfaces - Analyse de l’entrée manuscrite.

Notes

Attention

Pour éviter une fuite de mémoire, appelez IUnknown::Release sur ppRootNode lorsque vous n’avez plus besoin d’utiliser le nœud racine.

IInkAnalyzer gère une arborescence d’objets IContextNode. Ces objets contiennent à la fois l’entrée pour l’analyse et les résultats de l’analyse. Lorsque des traits sont initialement ajoutés à IInkAnalyzer, IInkAnalyzer les affecte à un IContextNode de type UnclassifiedInk (voir Types de nœudsIContextNode::GetType et Context). Une fois les traits analysés, IInkAnalyzer les affecte aux objets IContextNode appropriés dans l’arborescence. Pour plus d’informations sur l’utilisation d’IInkAnalyzer pour analyser l’entrée manuscrite, consultez Vue d’ensemble de l’analyse d’entrée manuscrite.

Exemples

L’exemple suivant montre une méthode qui guide l’arborescence des résultats IContextNode de l’analyseur d’encre. Si IInkAnlyzer n’effectue pas actuellement d’analyse d’entrée manuscrite, la méthode effectue les opérations suivantes.

  • Obtient la chaîne de reconnaissance supérieure.
  • Obtient le nœud racine de l’analyseur d’encre.
  • Appelle une méthode d’assistance, ExploreContextNode, pour examiner le nœud racine et ses nœuds enfants.
// Helper method that explores the current analysis results of an ink analyzer.
HRESULT CMyClass::ExploreAnalysisResults(
    IInkAnalyzer *pInkAnalyzer)
{
    // Check that the ink analyzer is not currently analyzing ink.
    VARIANT_BOOL bIsAnalyzing;
    HRESULT hr = pInkAnalyzer->IsAnalyzing(&bIsAnalyzing);

    if (SUCCEEDED(hr))
    {
        if (bIsAnalyzing)
        {
            return E_PENDING;
        }

        // Get the ink analyzer's best-result string.
        BSTR recognizedString = NULL;
        hr = pInkAnalyzer->GetRecognizedString(&recognizedString);

        if (SUCCEEDED(hr))
        {
            // Insert code that records the ink analyzer's best-result string here.

            // Get the ink analyzer's root node.
            IContextNode *pRootNode = NULL;
            hr = pInkAnalyzer->GetRootNode(&pRootNode);

            if (SUCCEEDED(hr))
            {
                // Call a helper method that recursively explores context
                // nodes and their subnodes.
                hr = this->ExploreContextNode(pRootNode);
            }

            // Release this reference to the root node.
            if (pRootNode != NULL)
            {
                pRootNode->Release();
                pRootNode = NULL;
            }
        }

        // Free the system resources for the recognized string.
        SysFreeString(recognizedString);
    }

    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

IInkAnalyzer

IContextNode

Types de nœuds de contexte

Informations de référence sur l’analyse de l’encre