IContextNode 接口
表示作为墨迹分析的一部分创建的对象树中的节点。
成员
IContextNode 接口继承自 IUnknown 接口。 IContextNode 还具有以下类型的成员:
方法
IContextNode 接口具有这些方法。
方法 | 说明 |
---|---|
AddContextLink | 将新的 IContextLink 添加到 IContextNode 对象的上下文链接集合。 |
AddPropertyData | 添加一段特定于应用程序的数据。 |
确认 | 修改确认类型,该类型控制 IInkAnalyzer 对象可以更改 IContextNode 的内容。 |
ContainsPropertyData | 确定 IContextNode 对象是否包含存储在指定标识符下的数据。 |
CreatePartiallyPopulatedSubNode | 创建一个子 IContextNode 对象,该对象仅包含有关类型、标识符和位置的信息。 |
CreateSubNode | 创建新的子 IContextNode 对象。 |
DeleteContextLink | 从 IContextNode 对象的链接集合中删除 IContextLink 对象。 |
DeleteSubNode | 删除子 IContextNode。 |
GetContextLinks | 检索 表示与其他 IContextNode 对象的关系 的 IContextLink 对象的集合。 |
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 相关联。 |
备注
上下文节点类型常量中介绍了 节点类型 。
示例
以下示例演示检查 IContextNode 的方法;方法执行以下操作:
- 获取上下文节点的类型。 如果上下文节点是未分类的墨迹、分析提示或自定义识别器节点,它将调用帮助程序方法来检查节点类型的特定属性。
- 如果节点具有子节点,则它通过调用自身来检查每个子节点。
- 如果节点是墨迹叶节点,它会通过调用帮助程序方法检查节点的笔划数据。
Ihe InkAnalysis API 允许创建包含墨迹词和文本字词的行节点。 但是,分析程序将忽略这些混合节点,并将它们视为外部节点。 这将影响最终用户在此混合节点上或周围写入时检测墨迹注释的解析准确性。
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 |
|