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