Метод IInkAnalyzer::GetRootNode

Возвращает корневой объект IContextNode дерева контекста объекта IInkAnalyzer .

Синтаксис

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

Параметры

ppRootNode [out]

Корневой элемент IContextNode контекстного дерева объекта IInkAnalyzer .

Возвращаемое значение

Описание возвращаемых значений см. в разделе Классы и интерфейсы — анализ рукописного ввода.

Remarks

Внимание!

Чтобы избежать утечки памяти, вызовите метод IUnknown::Release в ppRootNode , если вам больше не нужно использовать корневой узел.

IInkAnalyzer поддерживает дерево объектов IContextNode. Эти объекты содержат как входные данные для анализа, так и результаты анализа. При первоначальном добавлении штрихов в IInkAnalyzerIInkAnalyzer назначает их IContextNode типа UnclassifiedInk (см. раздел IContextNode::GetType и Типы узлов контекста). После анализа штрихов IInkAnalyzer назначает их соответствующим объектам IContextNode в дереве. Дополнительные сведения об использовании IInkAnalyzer для анализа рукописного ввода см. в разделе Общие сведения об анализе рукописного ввода.

Примеры

В следующем примере показан метод, который выполняет обход дерева результатов IContextNode анализатора рукописного ввода. Если IInkAnlyzer в настоящее время не выполняет анализ рукописного ввода, метод выполняет следующие действия.

  • Возвращает верхнюю строку распознавания.
  • Возвращает корневой узел анализатора рукописного ввода.
  • Вызывает вспомогательный метод , ExploreContextNodeчтобы проверить корневой узел и его дочерние узлы.
// 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;
}

Требования

Требование Значение
Минимальная версия клиента
Windows XP Tablet PC Edition [только классические приложения]
Минимальная версия сервера
Ни одна версия не поддерживается
Заголовок
IACom.h (также требуется IACom_i.c)
DLL
IACom.dll

См. также раздел

IInkAnalyzer

IContextNode

Типы узлов контекста

Справочник по анализу рукописного ввода