| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1814 人关注过本帖, 1 人收藏
标题:下拉式菜单
只看楼主 加入收藏
gzpjj
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-6-8
收藏(1)
 问题点数:0 回复次数:7 
下拉式菜单
下拉式菜单如何做啊??有哪位高手可以随便做一个给小弟参考一下啊?
搜索更多相关主题的帖子: 式菜单 
2004-06-10 20:29
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

/* MENUE.C 西文DOS下的西文下拉式菜单 */ #include "graphics.h" #include "conio.h" #include "bios.h" #include "process.h" #include "string.h" #include "stdio.h"

#define LEFT 331 /* 功能键的宏定义 */ #define RIGHT 333 #define UPPER 328 #define DOWN 336 #define ALT_X 301 #define ESC 27 #define ENTER 13

void WrtMnMenu(void); void WrtSbMenu(void); void SlctMenu(void); void SlctMnMenu(void); void SlctSbMenu(void); int GetKey(void); void SbFunGo(void); void Screen(void); void Wind(int,int,int,int,int,int,int,int,int); void Quit(void);

int Mm = 0; /* 主菜单选项 */ int Smm[4]; /* 各项主菜单下的子菜单选项 */ int SbNum[4] = {6, 6, 4, 3}; /* 各项主菜单的子菜单项数 */ int SbWid[4] = {20, 10, 13, 16}; /* 各项子菜单的窗口宽度 */ int SbX[4] = {5, 20, 33, 47}; /* 各项子菜单的X坐标 */ int Key = 0; /* 选择的键 */ char Buf[1000]; char *Main[4] = {" Parameters ", " Sampling ", " Reduction ", " Simple "}; /* 主菜单项名 */ char *Sub[4][6] = { { "Signal Channel", /* 子菜单项名 */ "Channel Selected", "Sample Points", "Sample Friquency", "Amplifyer Gain", "Trigger signal" }, { "Sampling ", "Dataview ", "Waveview ", "Realtime ", "Histogram", "Realhisto" }, { "Reduction ", "Resultdata ", "Resultview ", "Calibration" }, { "Acceleration 1", "Acceleration 2", "Acceleration 3" }}; int main(void) { Screen(); WrtMnMenu(); WrtSbMenu(); SlctMenu(); Quit(); return(0); }

void WrtMnMenu(void) { int i; window(1, 1, 80, 25); /* 显示主菜单 */ textattr(0x3e); for (i = 0; i < 4; i++) { gotoxy(SbX[i], 1); cputs(Main[i]); } gotoxy(SbX[Mm], 1); /* 设置光条颜色 */ textattr(0x4e); cputs(Main[Mm]); }

void WrtSbMenu(void) { int i; gettext(SbX[Mm]-2, 2, SbX[Mm]+SbWid[Mm]+1, SbNum[Mm]+4, Buf); Wind(SbX[Mm]-2, 2, SbX[Mm]+SbWid[Mm], SbNum[Mm]+3, 1, 1, 3, 15, 1); textattr(0x3f); /* 显示子菜单 */ for (i=0; i < SbNum[Mm]; i++) { gotoxy(2, 1+i); cputs(Sub[Mm][i]); } textattr(0x1e); /* 子菜单选项的颜色 */ gotoxy(2, Smm[Mm]+1); cputs(Sub[Mm][Smm[Mm]]); }

void SlctMenu(void) /* 执行菜单选择功能 */ { while(Key != ALT_X && Key != ESC) { Key = GetKey(); if (Key == LEFT || Key == RIGHT) SlctMnMenu(); if (Key == UPPER || Key == DOWN) SlctSbMenu(); if (Key == ENTER) SbFunGo(); } return; }

void SlctMnMenu(void) { window(1, 1, 80, 25); textattr(0x3e); gotoxy(SbX[Mm], 1); cputs(Main[Mm]); textattr(0x31); puttext(SbX[Mm]-2, 2, SbX[Mm]+SbWid[Mm]+1, SbNum[Mm]+4, Buf); if (Key == LEFT) Mm = Mm == 0 ? 3 : Mm-1; if (Key == RIGHT) Mm = Mm == 3 ? 0 : Mm+1; textattr(0x4e); gotoxy(SbX[Mm], 1); cputs(Main[Mm]); WrtSbMenu(); }

void SlctSbMenu(void) { textattr(0x3f); gotoxy(2, 1+Smm[Mm]); cputs(Sub[Mm][Smm[Mm]]); if (Key == UPPER) Smm[Mm] = Smm[Mm] == 0 ? SbNum[Mm]-1 : Smm[Mm]-1; if (Key == DOWN) Smm[Mm] = Smm[Mm] == SbNum[Mm]-1 ? 0 : Smm[Mm]+1; textattr(0x1e); gotoxy(2, Smm[Mm]+1); cputs(Sub[Mm][Smm[Mm]]); }

int GetKey(void) { int Ch, Low, Hig; Ch = bioskey(0); Low = Ch & 0x00ff; Hig = (Ch & 0xff00) >> 8; return (Low == 0 ? Hig+256 : Low); }

void SbFunGo(void) /* 根据键选执行相应的功能 */ { switch(Mm) { case 0: switch(Smm[0]) { case 0: break; case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; } break; case 1: switch(Smm[1]) { case 0: break; case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; } break; case 2: switch(Smm[2]) { case 0: break; case 1: break; case 2: break; case 3: break; } break; case 3: switch(Smm[3]) { case 0: break; case 1: break; case 2: break; } break; } }

void Screen(void) { window(1, 1, 80, 25); textattr(0x17); clrscr(); window(1, 1, 80, 1); textattr(0x3e); clrscr(); window(1, 24, 80, 24); textattr(0x74); clrscr(); cputs(" \x18 "); /* ↑键 */ cputs("\x19 "); /* ↓键 */ cputs("\x1a "); /* →键 */ cputs("\x1b "); /* ←键 */ textattr(0x7e); cputs("and "); textattr(0x74); cputs("Enter "); textattr(0x7e); cputs("to select menu. "); textattr(0x74); cputs(" Alt_X "); textattr(0x7e); cputs(" or "); textattr(0x74); cputs(" ESC "); textattr(0x7e); cputs(" to quit"); window(1, 25, 80, 25); textattr(0x6A); clrscr(); cputs(" BEIJING AGRICLUTURAL ENGINEERING UNIVERSITY & SHAN DONG COLLGE OF ENGINEERING"); Wind(1, 2, 80, 23, 2, 0, 1, 15, 1); window(1, 1, 80, 25); }

/* 字符窗口函数: x1, y1: 窗口左上角坐标; x2, y2: 窗口右下角坐标; FrmTp: 窗口边框类型: 0--无边框; 1--单线边框; 2--双线边框; IsBk: 是否带阴影背景; BCl: 字符颜色; TCl: 背景颜色; BgCl: 阴影背景的颜色. */ void Wind(int x1,int y1,int x2,int y2,int FrmTp,int IsBk,int BCl,int TCl,\ int BgCl) { int i; int c[2][6]={{0xda, 0xc4, 0xbf, 0xb3, 0xc0, 0xd9}, /* 单线字符 */ {0xc9, 0xcd, 0xbb, 0xba, 0xc8, 0xbc}}; /* 双线字符 */ textcolor(TCl); textbackground(BCl); window(x1, y1, x2, y2); clrscr(); if (FrmTp) /* 有边框线 */ { window(1, 1, 80, 25); gotoxy(x1, y1); putch(c[FrmTp-1][0]); for (i = x1+1; i < x2; i++) putch(c[FrmTp-1][1]); putch(c[FrmTp-1][2]); for (i = y1+1; i < y2; i++) { gotoxy(x1, i); putch(c[FrmTp-1][3]); gotoxy(x2, i); putch(c[FrmTp-1][3]); } gotoxy(x1, y2); putch(c[FrmTp-1][4]); for (i = x1+1; i < x2; i++) putch(c[FrmTp-1][1]); putch(c[FrmTp-1][5]); } if (IsBk) /* 有阴影背景 */ { textcolor(BgCl); textbackground(0); for (i = y1+1; i < y2+1; i++) { gotoxy(x2+1, i); putch('\xb1'); } for (i = x1+1; i < x2+2; i++) { gotoxy(i, y2+1); putch('\xb1'); } } window(x1+1, y1+1, x2-1, y2-1); }

void Quit(void) { textbackground(0); textcolor(7); window(1, 1, 80, 25); clrscr(); exit(0); } 


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-06-10 20:40
fququ
Rank: 1
等 级:新手上路
威 望:1
帖 子:181
专家分:0
注 册:2004-5-30
收藏
得分:0 
太好了。

2004-06-10 21:06
gzpjj
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-6-8
收藏
得分:0 
哇~~~!太令小弟感动且惊奇了~~!感动的是~!那么复杂的题都有人帮忙想想~~!惊奇的是原来是那么长的一条程序,这次考试肯定肥了~~~!

2004-06-10 21:58
gzpjj
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-6-8
收藏
得分:0 
不过真的非常谢谢帮忙的那位高手~~!谢谢~~~!

2004-06-10 21:59
小蚂蚁
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2004-4-14
收藏
得分:0 
用asp做将是很简单
用c做就是很繁
你去asp区发一贴子
求一下程序!!

[c相关下载版主] 任时光匆匆流去, 我只在乎你,心甘情愿感染你的气息.
2004-06-10 22:34
gzpjj
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-6-8
收藏
得分:0 
哦~~~!谢谢~~!

2004-06-10 23:33
ant3000
Rank: 1
等 级:新手上路
帖 子:188
专家分:0
注 册:2004-6-7
收藏
得分:0 

哇~~~~好!

2004-06-11 01:19
快速回复:下拉式菜单
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017962 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved