Интерфейс 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 из коллекции дочерних узлов родительского узла контекста в коллекцию subnodes указанного узла контекста.
ReparentStrokeByIdToNode Перемещает данные росчерка из этого IContextNode в указанный IContextNode.
SavePropertiesData Извлекает массив байтов, содержащий данные свойств для конкретного приложения и внутренние свойства для этого IContextNode.
SetLocation Обновления положение и размер этого IContextNode.
SetPartiallyPopulated Изменяет значение, указывающее, заполнен ли этот IContextNode частично или полностью.
SetStrokes Связывает указанные штрихи с этим IContextNode.

Комментарии

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

Примеры

В следующем примере показан метод, который проверяет 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

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