📄 tool1.c
字号:
} wrefresh(tree->win); tree->col = nscroll; if ( nselect != 0 ) tree->scr_col = nselect; tree->n = j ; return (l);}/*** 生成TREELIST** 目的: 加快屏幕翻滚速度***/generate_treelist( tree )TREE_CONTROL *tree;{ if ( tree->list != (TREE_LIST *)NULL ) free ( tree->list ); tree->list = (TREE_LIST *)malloc( (tree->num) * sizeof( TREE_LIST ) ); tree->i = 0; CXH = 0; if ( tree->startitem == NULL ) return (0); add_tree_list( tree, tree->startitem ); /*** 递归调用 ***/ return (1);}/*** 生成相同层的TREELIST** 目的: 递归调用 */add_tree_list( tree, clink )TREE_CONTROL *tree;TREE_ITEM *clink;{ TREE_ITEM * item; item = clink; while(1){ tree->i ++; tree->list[tree->i-1].level = item->level; tree->list[tree->i-1].item = item; if ( item->openflag == 1 ) { CXH ++; tree->list[tree->i-1].visible = 1; tree->list[tree->i-1].xh = CXH; } else { tree->list[tree->i-1].visible = 0; tree->list[tree->i-1].xh = 0; } if (item->nextlevellink != (TREE_ITEM *)NULL ) { add_tree_list( tree, item->nextlevellink ); } if( item->nextlink == (TREE_ITEM *)NULL ) return(0); else item = item ->nextlink; }/* return(0);*/}/***** 扩张 TREE_ITEM ***/expand_tree( tree ) TREE_CONTROL *tree;{ TREE_ITEM *item; int n; int col, scr_col; n = cal_listnum(tree); item = tree->list[n].item->nextlevellink; if ( item == ( TREE_ITEM *)NULL ) { return (0); } while(1) { item->openflag = 1; if ( item->nextlink == (TREE_ITEM *)NULL ) break; item = item->nextlink ; } generate_treelist( tree ); cal_linecol( tree, item->prelevellink ,&col, &scr_col ); show_treecontrol( tree, col, scr_col );}/***** 收缩 TREE_ITEM ***/unexpand_tree( tree ) TREE_CONTROL *tree;{ int n ; int col, scr_col; TREE_ITEM *item; n = cal_listnum(tree); item = tree->list[n].item->prelevellink; if ( item == ( TREE_ITEM *)NULL ) return (0); unexpand_tree_self( item ); generate_treelist( tree ); cal_linecol( tree, item ,&col, &scr_col ); show_treecontrol( tree, col, scr_col );}/***** 收缩 TREE_ITEM 自身***/unexpand_tree_self( item ) TREE_ITEM *item;{ TREE_ITEM *my_item; if ( item == (TREE_ITEM *)NULL ) return(-1); my_item = item->nextlevellink; if ( my_item == (TREE_ITEM *)NULL ) { return(0); } while(1) { my_item->openflag = 0; if ( my_item->nextlevellink != (TREE_ITEM *)NULL ) unexpand_tree_self( my_item ); if ( my_item->nextlink == (TREE_ITEM *)NULL ) return(0); my_item = my_item->nextlink ; }}/* ** 检索整个树,返回(TREE_ITEM *) 静态变量 **/TREE_ITEM *Serach_tree( TREE_CONTROL *tree, TREE_ITEM *item ){ if ( item == NULL ) return tree->startitem; if ( item->nextlevellink != NULL ) return item->nextlevellink; else if ( item->nextlink != NULL ) return item->nextlink; else if ( item->prelevellink != NULL ) return item->prelevellink->nextlink; } /* ** FIND the string in the tree **/TREE_ITEM *Find_tree_str( TREE_CONTROL *tree, char *s ){ TREE_ITEM *item = NULL; while( item = Serach_tree( tree, item ) ) { if ( strstr( item->text , s ) > 0 ) return item; } return (TREE_ITEM *)NULL;} /***** 求出当前TREE_CONTROL的TREE_ITEM*****/TREE_ITEM *Getcuritem( tree ) TREE_CONTROL *tree;{ return (TREE_ITEM *)(tree->list[cal_listnum( tree )].item);}/***** 求出当前TREE_CONTROL是第几行( LIST[n] )*****/int cal_listnum( tree ) TREE_CONTROL *tree;{ int n = 0 ,i = 0 ; while(1){ if ( tree->list[i].visible == 1 ) { n++; } if ( n >= tree->col + tree->scr_col - 1 ) break; i ++; } return (i);}/***** 求出item 在 tree 中的 col, scr_col*****/cal_linecol( tree, item ,col, scr_col )TREE_CONTROL *tree;TREE_ITEM *item;int *col;int *scr_col;{ int n = 0 ,i = 0 ; while(1){ if ( tree->list[i].visible == 1 ) { n++; } if ( tree->list[i].item == item ) break; i ++; } (*col) = (int)(n/tree->h)+1; (*scr_col) = (n%tree->h); return (i);}/*** 触发move事件 */trigger_tree_move ( tree, proc ) TREE_CONTROL *tree;int (*proc)();{ tree->moveproc = proc;}/*** 触发enter事件 */trigger_tree_neter ( tree, proc ) TREE_CONTROL *tree;int (*proc)();{ tree->enterproc = proc;}/*** 触发move事件 */trigger_tree_keydown ( tree, proc ) TREE_CONTROL *tree;int (*proc)();{ tree->keydownproc = proc;}test_item( tree ) TREE_CONTROL *tree;{ int i= 1; TREE_ITEM *item; printf( "col=%d,i=%d,num=%d\n", tree->col, tree->i, tree->num ); printf( "startitem=%x,curitem=%x,list=%x\n", tree->startitem, tree->curitem, tree->list ); item = tree->startitem ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlevellink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = tree->startitem->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlevellink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink ); item = item->nextlink ; printf( "%d:level=%d, name=%s\n", i++, item->level, item->text ); printf( "link=%x, nextlink =%x,prelk=%x, nextlevellink =%x\n", item, item->nextlink, item->prelink,item->nextlevellink );}test_list( tree ) TREE_CONTROL *tree;{ int i; for ( i = 0; i < tree->num; i++ ){ printf( "level = %d, visible = %d, xh =%d, link = %x\n", tree->list[i].level, tree->list[i].visible, tree->list[i].xh ,tree->list[i].item ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -