この例では、アウトライン・ツリーの使用方法を示します。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); }