IContextNodes::GetContextNode 메서드
이 컬렉션 내의 지정된 인덱스에서 IContextNode 개체를 검색합니다.
구문
HRESULT GetContextNode(
[in] ULONG ulIndex,
[out] IContextNode **ppContextNode
);
매개 변수
-
ulIndex [in]
-
가져올 IContextNode 개체의 인덱스(0부터 시작)입니다.
-
ppContextNode [out]
-
지정된 인덱스에서 참조되는 IContextNode에 대한 포인터입니다.
반환 값
반환 값에 대한 설명은 클래스 및 인터페이스 - 잉크 분석을 참조하세요.
설명
주의
메모리 누수 방지를 위해 컨텍스트 노드를 더 이상 사용할 필요가 없는 경우 *ppContextNode에서 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 버전 [데스크톱 앱만 해당] |
지원되는 최소 서버 |
지원되는 버전 없음 |
헤더 |
|
DLL |
|