アウトラインの走査例

この例では、アウトライン・ツリーの使用方法を示します。TraverseTreeは再帰的アルゴリズムで、アウトライン・ツリーを走査してすべてのアウトライン・メンバーへのアクセスを提供します。順番に各メンバーを選択して、最終メンバーに到達するまでそれぞれで処理します。コード中のコメントは、追加の処理ができることを示します。

このアルゴリズムには、複数のCのアウトラインAPIコマンドが組み込まれています。

このコードを実行する前に、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);
}