Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Представляет узел в дереве объектов, созданных в рамках анализа рукописного ввода.
Элементы
Интерфейс 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 [только классические приложения] |
| Минимальная версия сервера |
Ни одна версия не поддерживается |
| Заголовок |
|
| DLL |
|