.版本 2

.程序集 集_外部树型框

.子程序 外部树型框_查找项目, 整数型, , 成功返回项目索引，失败返回-1
.参数 树型框句柄, 整数型
.参数 欲查找的文本, 文本型
.参数 起始寻找位置, 整数型, 可空, 可空，默认为-1
.参数 精确查找, 逻辑型, 可空
.局部变量 局_1级句柄, 整数型
.局部变量 局_子句柄, 整数型
.局部变量 局_索引, 整数型

.如果真 (是否为空 (起始寻找位置))
    起始寻找位置 ＝ -1
.如果真结束
局_1级句柄 ＝ SendMessageA_整数 (树型框句柄, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
局_索引 ＝ 递归子项目_查找项目 (树型框句柄, 局_1级句柄, 欲查找的文本, 起始寻找位置, 真, 精确查找)
.判断循环首 (局_索引 ＝ -1)
    局_子句柄 ＝ SendMessageA_整数 (树型框句柄, #TVM_GETNEXTITEM, #TVGN_NEXT, 局_1级句柄)  ' 取兄弟
    .如果真 (局_子句柄 ＝ 0)
        跳出循环 ()
    .如果真结束

    局_索引 ＝ 递归子项目_查找项目 (树型框句柄, 局_子句柄, 欲查找的文本, 起始寻找位置, , 精确查找)
    .如果真 (局_索引 ＞ 0)
        返回 (局_索引 ＋ 1)
    .如果真结束

.判断循环尾 ()
返回 (局_索引)

.子程序 递归子项目_查找项目, 整数型
.参数 树型框句柄, 整数型
.参数 父项目句柄, 整数型, 可空
.参数 欲查找的文本, 文本型
.参数 起始寻找位置, 整数型, 可空, 可空，默认为0。
.参数 首次, 逻辑型, 可空
.参数 精确查找, 逻辑型, 可空
.局部变量 局_子项目句柄, 整数型
.局部变量 局_文本, 文本型
.局部变量 局_找到索引, 整数型
.局部变量 局_索引, 整数型, 静态

.如果真 (首次)
    局_索引 ＝ 0
.如果真结束

局_文本 ＝ 树型框_取项目文本 (树型框句柄, 父项目句柄)
.判断开始 (精确查找)
    .如果真 (局_文本 ＝ 欲查找的文本 且 局_索引 ＞ 起始寻找位置)
        返回 (局_索引)
    .如果真结束

.判断 (寻找文本 (局_文本, 欲查找的文本, , 真) ≠ -1 且 局_索引 ＞ 起始寻找位置)
    返回 (局_索引)
.默认

.判断结束


局_找到索引 ＝ -1
局_子项目句柄 ＝ SendMessageA_整数 (树型框句柄, #TVM_GETNEXTITEM, #TVGN_CHILD, 父项目句柄)  ' 取子项目的句柄
.判断循环首 (局_子项目句柄 ＞ 0)
    局_索引 ＝ 局_索引 ＋ 1
    局_文本 ＝ 树型框_取项目文本 (树型框句柄, 局_子项目句柄)
    .判断开始 (精确查找)
        .如果真 (局_文本 ＝ 欲查找的文本 且 局_索引 ＞ 起始寻找位置)
            返回 (局_索引)
        .如果真结束

    .判断 (寻找文本 (局_文本, 欲查找的文本, , 真) ≠ -1 且 局_索引 ＞ 起始寻找位置)
        返回 (局_索引)
    .默认

    .判断结束


    局_找到索引 ＝ 递归子项目_查找项目 (树型框句柄, 局_子项目句柄, 欲查找的文本, 起始寻找位置, , 精确查找)
    .如果真 (局_找到索引 ≠ -1)
        返回 (局_找到索引)
    .如果真结束

    局_子项目句柄 ＝ SendMessageA_整数 (树型框句柄, #TVM_GETNEXTITEM, #TVGN_NEXT, 局_子项目句柄)  ' 取兄弟
.判断循环尾 ()
返回 (局_找到索引)

.子程序 树型框_取项目文本, 文本型
.参数 树型框句柄, 整数型
.参数 句柄, 整数型
.局部变量 父项目句柄, 整数型
.局部变量 父项目TXT, TVITEMEX
.局部变量 项目文本, 文本型

父项目TXT.pszText ＝ 取空白文本 (100)
父项目TXT.hItem ＝ 句柄
父项目TXT.mask ＝ #TVIF_TEXT
父项目TXT.cchTextMax ＝ 100
SendMessage1 (树型框句柄, #TVM_GETITEMA, 0, 父项目TXT)
返回 (删尾空 (父项目TXT.pszText))

.子程序 外部树型框_加入项目, 整数型
.参数 父项目索引, 整数型
.参数 项目文本, 文本型, 可空
.参数 图片索引, 整数型, 可空
.参数 选中图片索引, 整数型, 可空
.参数 项目数值, 整数型, 可空
.参数 树型框句柄, 整数型, 可空
.局部变量 局部_插入项目, TVINSERTSTRUCT
.局部变量 局部_数据地址, 整数型

.如果真 (树型框句柄 ＝ 0)
    树型框句柄 ＝ _启动窗口.树型框_命令.取窗口句柄 ()
.如果真结束
局部_插入项目.hParent ＝ 父项目索引
局部_插入项目.hInsertAfter ＝ 3
局部_插入项目.pszText ＝ 项目文本
局部_插入项目.iImage ＝ 图片索引
局部_插入项目.iSelectedImage ＝ 选中图片索引
局部_插入项目.lParam ＝ 项目数值
局部_插入项目.mask ＝ 39  ' #TVIF_ALL
局部_数据地址 ＝ 取内存变量地址_TVINSERTSTRUCT (局部_插入项目, 局部_插入项目, 0)
返回 (SendMessageA_整数 (树型框句柄, 4352, 0, 局部_数据地址))  ' #TVM_INSERTITEMA
