この例では、アウトライン・ツリーの使用方法を示します。TraverseTreeは再帰的アルゴリズムで、アウトライン・ツリーを走査してすべてのアウトライン・メンバーへのアクセスを提供します。順番に各メンバーを選択して、最終メンバーに到達するまでそれぞれで処理します。コード中のコメントは、追加の処理ができることを示します。
このアルゴリズムには、複数のVBのアウトラインAPIコマンドが組み込まれています。
EsbOtlGetFirstMember()は、アウトライン中の最初のメンバー(最初に定義されている次元)へのメンバーのハンドルを戻します。
EsbOtlGetMemberInfo()は、指定されたメンバーに関する情報を取得します。
EsbOtlGetChild()は、メンバーの子を戻します。
EsbOtlGetNextSibling()は、メンバーの次の兄弟を戻します。
このコードを実行する前に、APIを初期化してアウトラインを開きます。このコードの後に、アウトラインを閉じてAPIを終了します。
TraverseTree (ESB_HOUTLINE_T)
{
ESB_HMEMBER_T hMember;
ESB_STS_T sts = 0;
sts = EsbOtlGetFirstMember(hOutline, &hMember);
if (!sts && hMember)
sts = TraverseTreeRecurse(hOutline, hMember);
}
TraverseTreeRecurse(ESB_HOUTLINE_T hOutline, ESB_HMEMBER_T hMember)
{
ESB_MEMBERINFO_T MbrInfo;
ESB_HMEMBER_T, hChild;
ESB_STS_T sts = 0;
while (!sts && hMember)
{
sts = EsbOtlGetMemberInfo (hOutline, hMember, &MbrInfo);
/* ADD THE PROCESSING FOR EACH MEMBER HERE. */
if (!sts)
{
sts = EsbOtlGetChild(hOutline, hMember, &hChild);
if (!sts && hChild)
{
sts = TraverseTreeRecurse(hOutline, hChild);
}
}
sts = EsbOtlGetNextSibling(hOutline, hMember, &hMember);
}
return (sts);
}