IInkAnalyzer::GetRootNode メソッド

IInkAnalyzer オブジェクトのコンテキスト ツリーのルート IContextNode を取得します。

構文

HRESULT GetRootNode(
  [out] IContextNode **ppRootNode
);

パラメーター

ppRootNode [out]

IInkAnalyzer オブジェクトのコンテキスト ツリーのルート IContextNode

戻り値

戻り値の説明については、「 クラスとインターフェイス - インク分析」を参照してください。

解説

注意事項

メモリ リークを回避するには、ルート ノードを使用する必要がなくなったら、ppRootNodeIUnknown::Release を呼び出します。

IInkAnalyzer、IContextNode オブジェクトのツリーを保持します。 これらのオブジェクトには、分析のための入力と分析の結果の両方が含まれます。 ストロークが最初 に IInkAnalyzer に追加されると、 IInkAnalyzer は UnclassifiedInk 型の IContextNode にストロークを割り当てます (「 IContextNode::GetType and Context Node Types」を参照)。 ストロークが分析されると、 IInkAnalyzer によってツリー内の適切な IContextNode オブジェクトに割り当てられます。 IInkAnalyzer を使用してインクを分析する方法の詳細については、「インク分析の概要」を参照してください。

次の例は、インク アナライザーの IContextNode 結果ツリーを記述するメソッドを示しています。 IInkAnlyzer が現在インク分析を実行していない場合、メソッドは次の処理を行います。

  • 最上位の認識文字列を取得します。
  • インク アナライザーのルート ノードを取得します。
  • ルート ノードとその子ノードを調べるヘルパー メソッド ExploreContextNodeを呼び出します。
// Helper method that explores the current analysis results of an ink analyzer.
HRESULT CMyClass::ExploreAnalysisResults(
    IInkAnalyzer *pInkAnalyzer)
{
    // Check that the ink analyzer is not currently analyzing ink.
    VARIANT_BOOL bIsAnalyzing;
    HRESULT hr = pInkAnalyzer->IsAnalyzing(&bIsAnalyzing);

    if (SUCCEEDED(hr))
    {
        if (bIsAnalyzing)
        {
            return E_PENDING;
        }

        // Get the ink analyzer's best-result string.
        BSTR recognizedString = NULL;
        hr = pInkAnalyzer->GetRecognizedString(&recognizedString);

        if (SUCCEEDED(hr))
        {
            // Insert code that records the ink analyzer's best-result string here.

            // Get the ink analyzer's root node.
            IContextNode *pRootNode = NULL;
            hr = pInkAnalyzer->GetRootNode(&pRootNode);

            if (SUCCEEDED(hr))
            {
                // Call a helper method that recursively explores context
                // nodes and their subnodes.
                hr = this->ExploreContextNode(pRootNode);
            }

            // Release this reference to the root node.
            if (pRootNode != NULL)
            {
                pRootNode->Release();
                pRootNode = NULL;
            }
        }

        // Free the system resources for the recognized string.
        SysFreeString(recognizedString);
    }

    return hr;
}

必要条件

要件
サポートされている最小のクライアント
Windows XP タブレット PC エディション [デスクトップ アプリのみ]
サポートされている最小のサーバー
サポートなし
Header
IACom.h (IACom_i.c も必要)
[DLL]
IACom.dll

関連項目

IInkAnalyzer

IContextNode

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

インク分析リファレンス