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
IACom.h (IACom_i.c も必要)
[DLL]
IACom.dll

関連項目

IContextNodes

コンテキスト ノードの種類

IInkAnalyzer

インク分析リファレンス