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 버전 [데스크톱 앱만 해당] |
지원되는 최소 서버 |
지원되는 버전 없음 |
헤더 |
|
DLL |
|