Интерфейс IContextNode

Представляет узел в дереве объектов, созданных при анализе рукописного ввода.

Элементы

Интерфейс IContextNode наследуется от интерфейса IUnknown . IContextNode также имеет следующие типы элементов:

Методы

Интерфейс IContextNode имеет эти методы.

Метод Описание
AddContextLink Добавляет новый объект IContextLink в коллекцию ссылок контекста объекта IContextNode .
AddPropertyData Добавляет фрагмент данных для конкретного приложения.
Подтвердить Изменяет тип подтверждения, который управляет тем, что может изменить объект IInkAnalyzer для IContextNode.
ContainsPropertyData Определяет, содержит ли объект IContextNode данные, хранящиеся под указанным идентификатором.
CreatePartiallyPopulatedSubNode Создает дочерний объект IContextNode , содержащий только сведения о типе, идентификаторе и расположении.
CreateSubNode Создает новый дочерний объект IContextNode .
DeleteContextLink Удаляет объект IContextLink из коллекции ссылок объекта IContextNode .
DeleteSubNode Удаляет дочерний объект IContextNode.
GetContextLinks Извлекает коллекцию объектов IContextLink , представляющих связи с другими объектами IContextNode .
GetId Извлекает идентификатор объекта IContextNode .
GetLocation Извлекает позицию и размер объекта IContextNode .
GetParentNode Извлекает родительский узел этого IContextNode в дереве узлов контекста.
GetPartiallyPopulated Извлекает значение, указывающее, заполняется ли объект IContextNode частично или полностью заполнен.
GetPropertyData Извлекает данные, относящиеся к приложению, или другие данные свойств с заданным идентификатором.
GetPropertyDataIds Извлекает идентификаторы, для которых есть данные свойств.
GetStrokeCount Извлекает количество росчерков, связанных с объектом IContextNode .
GetStrokeId Извлекает идентификатор росчерка, на который ссылается значение индекса в объекте IContextNode .
GetStrokeIds Извлекает массив идентификаторов для росчерков в объекте IContextNode .
GetStrokePacketDataById Извлекает массив, содержащий данные свойства пакета для указанного росчерка.
GetStrokePacketDescriptionById Извлекает массив, содержащий идентификаторы свойств пакета для указанного росчерка.
GetSubNodes Извлекает прямые дочерние узлы объекта IContextNode .
Gettype Извлекает тип объекта IContextNode .
GetTypeName Извлекает понятное для человека имя типа этого объекта IContextNode.
IsConfirmed Извлекает значение, указывающее, подтверждается ли объект IContextNode . IInkAnalyzer не может изменить тип узла и связанные штрихи для подтвержденных объектов IContextNode .
LoadPropertiesData Повторно создает данные свойств для конкретного приложения и внутреннего свойства для массива байтов, который ранее был создан с помощью IContextNode::SavePropertiesData.
MoveSubNodeToPosition Переупорядочение указанного дочернего объекта IContextNode в указанный индекс.
RemovePropertyData Удаляет фрагмент данных, относящихся к приложению.
Репарент Перемещает этот объект IContextNode из коллекции дочерних узлов родительского контекста в коллекцию вложенных узлов контекста указанного узла контекста.
ReparentStrokeByIdToNode Перемещает данные росчерка из этого объекта IContextNode в указанный объект IContextNode.
SavePropertiesData Извлекает массив байтов, содержащий данные свойств для конкретного приложения и внутреннего свойства для этого объекта IContextNode.
SetLocation Обновляет положение и размер этого объекта IContextNode.
SetPartiallyPopulated Изменяет значение, указывающее, является ли этот IContextNode частично или полностью заполненным.
SetStrokes Связывает указанные росчерки с данным IContextNode.

Remarks

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

Примеры

В следующем примере показан метод, который проверяет IContextNode; метод выполняет следующее:

  • Возвращает тип узла контекста. Если узел контекста является неклассифицированным рукописным вводом, указанием анализа или узлом пользовательского распознавателя, он вызывает вспомогательный метод для проверки определенных свойств типа узла.
  • Если узел содержит вложенные части, он проверяет каждый поднодер, вызывая себя.
  • Если узел является конечным узлом рукописного ввода, он проверяет данные росчерка для узла, вызывая вспомогательный метод.

API Ihe InkAnalysis позволяет создать узел строки, содержащий рукописные слова и текстовые слова. Однако средство синтаксического анализа будет игнорировать эти смешанные узлы и будет обрабатывать их как внешние узлы. Это повлияет на точность синтаксического анализа обнаружения рукописных заметок, когда конечный пользователь записывает данные на этот смешанный узел или вокруг него.

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

Требования

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

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

IContextNodes

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

IInkAnalyzer

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