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 태블릿 PC 버전 [데스크톱 앱만 해당]
지원되는 최소 서버
지원되는 버전 없음
헤더
IACom.h(IACom_i.c도 필요)
DLL
IACom.dll

추가 정보

IContextNodes

컨텍스트 노드 형식

IInkAnalyzer

잉크 분석 참조