⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tool1.c

📁 Unix/Linux文本模式下显示和操作菜单的处理程序。
💻 C
📖 第 1 页 / 共 2 页
字号:
	}	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 + -