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

📄 通用菜单生成程序.htm

📁 curses界面编程
💻 HTM
📖 第 1 页 / 共 3 页
字号:
function HideMenu() 
{
 var mX;
 var mY;
 var vDiv;
 var mDiv;
	if (isvisible == true)
{
		vDiv = document.all("menuDiv");
		mX = window.event.clientX + document.body.scrollLeft;
		mY = window.event.clientY + document.body.scrollTop;
		if ((mX < parseInt(vDiv.style.left)) || (mX > parseInt(vDiv.style.left)+vDiv.offsetWidth) || (mY < parseInt(vDiv.style.top)-h) || (mY > parseInt(vDiv.style.top)+vDiv.offsetHeight)){
			vDiv.style.visibility = "hidden";
			isvisible = false;
		}
}
}

function ShowMenu(vMnuCode,tWidth) {
	vSrc = window.event.srcElement;
	vMnuCode = "<table id='submenu' cellspacing=1 cellpadding=3 style='width:"+tWidth+"' class=menu onmouseout='HideMenu()'><tr height=23><td nowrap align=left class=MenuBody>" + vMnuCode + "</td></tr></table>";

	h = vSrc.offsetHeight;
	w = vSrc.offsetWidth;
	l = vSrc.offsetLeft + leftMar+4;
	t = vSrc.offsetTop + topMar + h + space-2;
	vParent = vSrc.offsetParent;
	while (vParent.tagName.toUpperCase() != "BODY")
	{
		l += vParent.offsetLeft;
		t += vParent.offsetTop;
		vParent = vParent.offsetParent;
	}

	menuDiv.innerHTML = vMnuCode;
	menuDiv.style.top = t;
	menuDiv.style.left = l;
	menuDiv.style.visibility = "visible";
	isvisible = true;
    makeRectangularDropShadow(submenu, MENU_SHADOW_COLOR, 4)
}

function makeRectangularDropShadow(el, color, size)
{
	var i;
	for (i=size; i>0; i--)
	{
		var rect = document.createElement('div');
		var rs = rect.style
		rs.position = 'absolute';
		rs.left = (el.style.posLeft + i) + 'px';
		rs.top = (el.style.posTop + i) + 'px';
		rs.width = el.offsetWidth + 'px';
		rs.height = el.offsetHeight + 'px';
		rs.zIndex = el.style.zIndex - i;
		rs.backgroundColor = color;
		var opacity = 1 - i / (i + 1);
		rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
		el.insertAdjacentElement('afterEnd', rect);
		global.fo_shadows[global.fo_shadows.length] = rect;
	}
}
</script>
<script language='JavaScript' type='text/JavaScript'>
//菜单列表
var menu1="<img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=2'>基础应用</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder4.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=3'>程序设计</a><br><img src='images/tree_line3.gif' width='17' height='16' valign='abvmiddle'><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=14'>C程序</a><br><img src='images/tree_line3.gif' width='17' height='16' valign='abvmiddle'><img src='images/tree_line2.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=15'>Shell程序</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=4'>高级应用</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=5'>网络应用</a><br><img src='images/tree_line2.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=16'>存储备份</a><br>";
var menu2="<img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=7'>Oracle</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=8'>Informix</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=9'>Sybase</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=10'>DB2</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=11'>MySql</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=12'>Fox系列</a><br><img src='images/tree_line2.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=36'>SQL查询语言</a><br>";
var menu3="<img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=18'>计算机主机</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=19'>打印机</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=20'>路由器</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=21'>交换机</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=22'>SCSI卡</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=23'>磁带机</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=24'>MO</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=25'>刻录机</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=26'>多用户卡</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=27'>终端</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=28'>网卡</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=29'>终端服务器</a><br><img src='images/tree_line2.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=30'>调制解调器</a><br>";
var menu4="<img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=32'>金融</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=33'>邮政</a><br><img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=34'>电信</a><br><img src='images/tree_line2.gif' width='17' height='16' valign='abvmiddle'><img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'><a style=font-size:9pt;line-height:14pt; href='ShowClass2.asp?ClassID=35'>保险</a><br>";
var menu_skin="<a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=1'>蓝天动力</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=13'>牧虫典雅</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=14'>雅虎秋梦</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=15'>灰色畅想</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=16'>绿雨飘香</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=17'>幽绿芭蕾</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=18'>晴空幽蓝</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=19'>清爽秋色</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=20'>书卷飘香</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=21'>青青绿草</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=22'>春满校园</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=23'>金色农庄</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=24'>博大媒体</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=25'>紫色梦幻</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=26'>紫色水晶</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=27'>清香咖啡</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=28'>檀香古色</a><br><a style=font-size:9pt;line-height:14pt; href='SetCookie.asp?Action=SetSkin&ClassID=14&SkinID=29'>红色中国</a><br>";
</script>

</head>
<body leftmargin=0 topmargin=0 onmousemove='HideMenu()'>
<div id=menuDiv style='Z-INDEX: 1000; VISIBILITY: hidden; WIDTH: 1px; POSITION: absolute; HEIGHT: 1px; BACKGROUND-COLOR: #9cc5f8'></div>
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0" class="topborder">
  <tr class="nav_top"> 
    <td valign="top">|<a href='../' target='_blank'>光盘中心</a>|<a href='../softdown' target='_blank'>下载中心</a>|<a href='/video' target='_blank'>视频中心</a>|<a href='./'><font color=red>文章中心</font></a>|<a href='../ly' target='_blank'>留言中心</a>|<a href='http://unix-cd.huaanpawn.com/bbs/' target='_blank'>技术论坛</a>| </td>
  </tr>
  <tr  bgcolor="#FFFFFF"> 
    <td height="60">
<table width="100%" align="center" cellpadding="0" cellspacing="0">
        <tr> 
          <td> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" Class="nav_main">
              <tr> 
                <td width="180">
                  <a href='http://unix-cd.com' title='Unix爱好者'><img src='http://unix-cd.com/unixlm.gif' width='180' height='60' border='0'></a>
                </td>
                <td> <div align="center">
                    <a href='http://sdccf.nease.net' target='_blank' title='Unix爱好者:http://sdccf.nease.net'><img src='http://sdccf.nease.net/unixcd.gif' width='480' height='60' border='0'></a>
                  </div></td>
                <td width="80"><table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%" align="center">
                    <tr valign="middle"> 
                      <td align="center"><img src="Images/home.gif" align="absmiddle" width="16" height="16"></td>
                      <td align="center"><a href="#" onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://unix-cd.com')">设为首页</a></td>
                    </tr>
                    <tr valign="middle"> 
                      <td align="center"><img src="Images/email.gif" align="absmiddle" width="16" height="17"></td>
                      <td align="center"><a href="mailto:webmaster@unix-cd.com">联系站长</a></td>
                    </tr>
                    <tr valign="middle"> 
                      <td align="center"><img src="Images/bookmark.gif" align="absmiddle" width="16" height="16"></td>
                      <td align="center"><a href="javascript:window.external.addFavorite('http://unix-cd.com','Unix爱好者')">加入收藏</a></td>
                    </tr>
                  </table></td>
              </tr>
            </table></td>
        </tr>
        <tr class="nav_bottom">
          <td height="9"></td>
        </tr>
      </table></td>
  </tr>
  <tr valign="middle" class="nav_menu"> 
    <td height="22" valign="middle"> 
      |<a href='./'>首页</a>|<a href='ShowClass2.asp?ClassID=1' onMouseOver='ShowMenu(menu1,100)'><font color=red>操作系统</font></a>|<a href='ShowClass2.asp?ClassID=6' onMouseOver='ShowMenu(menu2,100)'>数据库</a>|<a href='ShowClass2.asp?ClassID=17' onMouseOver='ShowMenu(menu3,100)'>硬件设备</a>|<a href='ShowClass2.asp?ClassID=31' onMouseOver='ShowMenu(menu4,100)'>行业应用</a>|<a href='#' onMouseOver='ShowMenu(menu_skin,100)'>自选风格</a>|
    </td>
  </tr>
</table>
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="border">
  <tr valign="middle"  class="txt_css"> 
    <td width=15><img src="Images/arrow2.gif" width="6" height="7"> 
    </td>
    <td width=550>
      您现在的位置:<a href='http://unix-cd.com'>Unix爱好者</a>>><a href='./'>文章中心</a>>><a href='ShowClass2.asp?ClassID=1&LayoutID=1'>操作系统</a>>><a href='ShowClass2.asp?ClassID=3&LayoutID=1'>程序设计</a>>><a href='ShowClass2.asp?ClassID=14'>C程序</a>>>正文
    </td>
    <td width=195 align=right>今天是: 
      <script language="JavaScript" type="text/JavaScript">
var day="";
var month="";
var ampm="";
var ampmhour="";
var myweekday="";
var year="";
mydate=new Date();
myweekday=mydate.getDay();
mymonth=mydate.getMonth()+1;
myday= mydate.getDate();
myyear= mydate.getYear();
year=(myyear > 200) ? myyear : 1900 + myyear;
if(myweekday == 0)
weekday=" 星期日 ";
else if(myweekday == 1)
weekday=" 星期一 ";
else if(myweekday == 2)
weekday=" 星期二 ";
else if(myweekday == 3)
weekday=" 星期三 ";
else if(myweekday == 4)
weekday=" 星期四 ";
else if(myweekday == 5)
weekday=" 星期五 ";
else if(myweekday == 6)
weekday=" 星期六 ";
document.write(year+"年"+mymonth+"月"+myday+"日 "+weekday);
</script>  </td>
  </tr>
</table>
<table width="760" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr> 
    <td  height="13" align="center" valign="top"><table width="755" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr> 
          <td height="13" Class="tdbg_left2"></td>
        </tr>
      </table></td>
  </tr>
</table>

<table width="760" border="0" align="center" cellpadding="0" cellspacing="0" class="border2">
  <tr> 
    <td valign="top"><table width="100%" border="0" align="center" cellpadding="2" cellspacing="0" class="border">
        <tr> 
          <td class="title"><table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr> 
                <td width="72%" class="title_maintxt"><img src="Images/arrow.gif" width="11" height="14" align="absmiddle"> 
                  通用菜单生成程序
                </td>
                <td width="28%" class="title_maintxt"> 
                  <font color=red>热</font><font color=green>荐</font>
                </td>
              </tr>
            </table> </td>
        </tr>
        <tr align="center" valign="middle"> 
          <td height="40" colspan="2"><font size="4"><strong>通用菜单生成程序</strong></font> </td>
        </tr>
        <tr align="center" class="tdbg_leftall"> 
          <td colspan="2">[ 
            作者:<a href='mailto:htldm@gaoguomodel.com'>htldm</a>转贴自:http://www.chinaunix.net点击数:3336文章录入:<a href='ShowUserInfo.asp?UserID=2399'>sdccf</a>
            ]</td>
        </tr>
        <tr> 
          <td colspan="2"><table width="100%" border="0" cellspacing="5" cellpadding="0">
              <tr> 
                <td height="200" valign="top"> <P><BR><BR>/*********** 主程序 ****************/ <BR>/***  cc menu.c -l<a name=3></a><B style='color:black;background-color:#ff9999'>curses</B> -omenu      */ <BR><BR>#include <stdio.h> <BR>#include  <curses.h> <BR>#include <ctype.h> <BR>#define  <a name=2></a><B style='color:black;background-color:#99ff99'>ENTER</B> 10 <BR>#define  ESCAPE 27 <BR><BR>WINDOW *menubar,*messagebar,*temp,*temp1; <BR>char param[10][10][13]; <BR><BR><BR>void init_<B style='color:black;background-color:#ff9999'>curses</B>() <BR>{ <BR>   initscr(); <BR>   start_color(); <BR>   init_pair(1,COLOR_WHITE,COLOR_BLUE); <BR>   init_pair(2,COLOR_BLUE,COLOR_WHITE); <BR>   init_pair(3,COLOR_RED,COLOR_WHITE); <BR>   init_pair(4,COLOR_WHITE,COLOR_RED); <BR>   curs_set(0); <BR>   noecho(); <BR>   keypad(stdscr,TRUE); <BR>} <BR><BR><BR>void GetSubStr(char *des, char *src, char ch,int n) <BR>{ <BR>  int  i,len; <BR>  char *p1,*p, tmp[300]; <BR><BR> strcpy( tmp, src ); <BR> *des=0; <BR> p1 = tmp; <BR> i=0; <BR> while(i<n) <BR> { <BR>  i++; <BR>  p = (char *)strchr(p1,ch); <BR>  if(p != NULL) <BR>  { <BR>   *p++ = 0; <BR>   p1 = p;  <BR>  } <BR> } <BR> p = (char *)strchr(p1,ch); <BR> if(p != NULL) <BR> { <BR>  *p = 0; <BR>  strcpy(des,p1); <BR> } <BR>} <BR><BR><BR>int get_param(char *name) <BR>{ <BR> FILE *fp; <BR> char ss[201],xm[3],gs[3]; <BR> int i,j; <BR><BR> sprintf(ss,"%s.conf",name); <BR> if((fp=fopen(ss,"r"))==NULL) return(-1); <BR> for(j=0;j<10;j++) for(i=0;i<10;i++) memset(param[j][i],0,13); <BR> while(1) <BR> { <BR>  memset(ss,0,201); <BR>  fgets(ss,200,fp); <BR>  if(feof(fp)) break; <BR>  if(ss[0]=='#') continue; <BR>  GetSubStr(xm,ss,'|',0); <BR>  GetSubStr(gs,ss,'|',1); <BR>  j=atoi(xm); <BR>  for(i=1;i<=atoi(gs);i++) <BR>  { <BR>   sprintf(param[j][0],"%s",gs); <BR>   GetSubStr(param[j][i],ss,'|',i+1); <BR>  } <BR> } <BR> fclose(fp); <BR> return(0); <BR>} <BR><BR><BR>void draw_menubar(WINDOW *menubar) <BR>{ <BR>  int i; <BR>   wbkgd(menubar,COLOR_PAIR(2)); <BR><BR>  for(i=0;i<atoi(param[0][0]);i++) <BR>  { <BR>   wattron(menubar,COLOR_PAIR(3)); <BR>     mvwprintw(menubar,0,i*14+2,"%1d.",i+1); <BR>     wattroff(menubar,COLOR_PAIR(3)); <BR>     mvwprintw(menubar,0,i*14+4,"%-12s",param[0][i+1]); <BR>  } <BR>} <BR><BR><BR>WINDOW **draw_menu(int menu) <BR>{ <BR>   int i,start_col; <BR>   WINDOW **items; <BR>   items=(WINDOW **)malloc((atoi(param[menu][0])+1)*sizeof(WINDOW *)); <BR>  start_col=(menu-1)*14+2; <BR><BR>   items[0]=newwin(atoi(param[menu][0])+2,14,3,start_col); <BR>   wbkgd(items[0],COLOR_PAIR(2)); <BR>   box(items[0],ACS_VLINE,ACS_HLINE); <BR>   for(i=1;i<=atoi(param[menu][0]);i++) <BR>  { <BR>    items[i]=subwin(items[0],1,12,3+i,start_col+1); <BR>     wprintw(items[i],"%s",param[menu][i]); <BR>  } <BR>   wbkgd(items[1],COLOR_PAIR(4)); <BR>   wrefresh(items[0]); <BR>   return items; <BR>} <BR><BR><BR>void delete_menu(WINDOW **items,int count) <BR>{ <BR>   int i; <BR>   for(i=0;i<count;i++) delwin(items[i]); <BR>   free(items); <BR>} <BR><BR><BR>int scroll_menu(WINDOW **items,int menu) <BR>{ <BR>   int key,count,selected=0; <BR><BR>  count=atoi(param[menu][0]); <BR>   while (1) <BR>  { <BR>       key=getch(); <BR>       if (key==<a name=0></a><B style='color:black;background-color:#ffff66'>KEY_</B>DOWN || key==<B style='color:black;background-color:#ffff66'>KEY_</B>UP) <BR>    { <BR>           wbkgd(items[selected+1],COLOR_PAIR(2)); <BR>           wnoutrefresh(items[selected+1]); <BR>           if (key==<B style='color:black;background-color:#ffff66'>KEY_</B>DOWN) <BR>               selected=(selected+1) % count; <BR>           else <BR>               selected=(selected+count-1) % count; <BR>           wbkgd(items[selected+1],COLOR_PAIR(4)); <BR>           wnoutrefresh(items[selected+1]); <BR>           doupdate(); <BR>       } <BR>    else if (key==<B style='color:black;background-color:#ffff66'>KEY_</B>LEFT || key==<B style='color:black;background-color:#ffff66'>KEY_</B>RIGHT) <BR>    { <BR>           delete_menu(items,count+1); <BR>           touchwin(stdscr); <BR>           refresh(); <BR>           if (key==<B style='color:black;background-color:#ffff66'>KEY_</B>LEFT) <BR>      { <BR>       menu-=1; <BR>       if(menu<=0) menu=atoi(param[0][0]); <BR>            items=draw_menu(menu); <BR>             return scroll_menu(items,menu); <BR>      } <BR>           if (key==<B style='color:black;background-color:#ffff66'>KEY_</B>RIGHT) <BR>      { <BR>       menu+=1; <BR>       if(menu>atoi(param[0][0])) menu=1; <BR>            items=draw_menu(menu); <BR>             return scroll_menu(items,menu); <BR>      } <BR>       } <BR>    else if (key==ESCAPE || key=='0' || key=='q') <BR>    { <BR>     delete_menu(items,count+1); <BR>     return -1; <BR>    } <BR>       else if (key==<B style='color:black;background-color:#99ff99'>ENTER</B>) <BR>    { <BR>     delete_menu(items,count+1); <BR>     return selected; <BR>    } <BR>   } <BR>} <BR><BR><BR>message(char *ss) <BR>{ <BR>    wbkgd(messagebar,COLOR_PAIR(2)); <BR>    wattron(messagebar,COLOR_PAIR(3)); <BR>    mvwprintw(messagebar,0,0,"%80s"," "); <BR>    mvwprintw(messagebar,0,(80-strlen(ss))/2-1,"%s",ss); <BR>    wattroff(messagebar,COLOR_PAIR(3)); <BR>   wrefresh(messagebar); <BR>} <BR><BR><BR>int main(int argc,char **argv) <BR>{ <BR> int key; <BR> int selected_item; <BR> char ss[81]; <BR> WINDOW **menu_items; <BR><BR> if(get_param(argv[0])) <BR> { <BR>  printf("\n打开配置文件 %s.conf 错!\n",argv[0]); <BR>  return(-1); <BR> } <BR>  <BR> init_<B style='color:black;background-color:#ff9999'>curses</B>(); <BR> bkgd(COLOR_PAIR(1)); <BR> menubar=subwin(stdscr,1,80,1,0); <BR> messagebar=subwin(stdscr,1,80,24,0); <BR> temp=subwin(stdscr,22,80,2,0); <BR> temp1=subwin(stdscr,20,78,3,1); <BR> strcpy(ss,"通用菜单生成程序"); <BR> mvwprintw(stdscr,0,(80-strlen(ss))/2-1,"%s",ss); <BR> draw_menubar(menubar); <BR> message("请按数字键选择相应菜单. ESC 或'0'键退出."); <BR> box(temp,ACS_VLINE,ACS_HLINE); <BR> refresh(); <BR><BR> do { <BR>  key=getch(); <BR>  if(isdigit(key)&&key>'0'&&key<=atoi(param[0][0])+'0') <BR>  { <BR>   werase(messagebar); <BR>   wrefresh(messagebar); <BR>   menu_items=draw_menu(key-'0'); <BR>   selected_item=scroll_menu(menu_items,key-'0'); <BR>   touchwin(stdscr); <BR>   refresh(); <BR>  } <BR> } while (key!=ESCAPE && key!='q' && key!='0'); <BR>  <BR> delwin(temp1); <BR> delwin(temp); <BR> delwin(menubar); <BR> delwin(messagebar); <BR> endwin(); <BR> return(0); <BR>} <BR></P>
<P></P>
<P><SPAN class=postbody><FONT size=2>菜单参数配置文件 menu.conf <BR><BR></FONT></SPAN>
<TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -