Метод 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 [только классические приложения] |
Минимальная версия сервера |
Ни одна версия не поддерживается |
Заголовок |
|
DLL |
|