다음을 통해 공유


IContextNode::GetSubNodes 메서드

IContextNode 개체의 직접 자식 노드를 가져옵니다.

구문

HRESULT GetSubNodes(
  [out] IContextNodes **ppSubContextNodes
);

매개 변수

ppSubContextNodes [out]

IContextNode 의 직접 자식 노드인 IContextNode 개체의 컬렉션입니다.

반환 값

반환 값에 대한 설명은 클래스 및 인터페이스 - 잉크 분석을 참조하세요.

설명

주의

메모리 누수 방지를 위해 하위 노드 컬렉션을 더 이상 사용할 필요가 없는 경우 *ppSubContextNodes에서 IUnknown::Release를 호출합니다.

모든 하위 노드가 아닌 직접 자식 노드만 반환합니다.

예제

이 예제에서는 IContextNode를 검사하는 메서드 ExploreContextNode를 보여 줍니다. 메서드는 다음을 수행합니다.

  • 컨텍스트 노드의 형식을 가져옵니다.
  • 컨텍스트 노드가 분류되지 않은 잉크, 분석 힌트 또는 사용자 지정 인식기 노드인 경우 도우미 메서드를 호출하여 노드 형식의 특정 속성을 검사합니다.
  • 노드에 하위 노드가 있는 경우 자체 호출하여 각 하위 노드를 검사합니다.
  • 노드가 잉크 리프 노드인 경우 도우미 메서드를 호출하여 노드의 스트로크 데이터를 검사합니다.
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 태블릿 PC 버전 [데스크톱 앱만 해당]
지원되는 최소 서버
지원되는 버전 없음
헤더
IACom.h(IACom_i.c도 필요)
DLL
IACom.dll

추가 정보

IContextNode

IContextNode::GetParentNode

잉크 분석 참조