IContextNode インターフェイス
インク分析の一部として作成されるオブジェクトのツリー内のノードを表します。
メンバー
IContextNode インターフェイスは、IUnknown インターフェイスから継承されます。 IContextNode には、次の種類のメンバーもあります。
メソッド
IContextNode インターフェイスには、これらのメソッドがあります。
メソッド | 説明 |
---|---|
AddContextLink |
IContextNode オブジェクトのコンテキスト リンク コレクションに新しい IContextLink を追加します。 |
AddPropertyData | アプリケーション固有のデータの一部を追加します。 |
確認 |
IContextNode に関して IInkAnalyzer オブジェクトが変更できる内容を制御する確認の種類を変更します。 |
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 [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
サポートなし |
Header |
|
[DLL] |
|