esc退出
创新互联云计算的互联网服务提供商,拥有超过13年的服务器租用、绵阳服务器托管、云服务器、网页空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、网页空间、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
#include stdio.h
#include stdlib.h
#include conio.h
void main()
{
while (1)
{
system("cls");
printf("┌----------------------┐\n");
printf("├ 计算圆 ┤\n");
printf("├----------------------┤\n");
printf("├ 计算正方形 ┤\n");
printf("├----------------------┤\n");
printf("├ 计算长方形 ┤\n");
printf("└----------------------┘\n");
if (27 == getch()) break;
}
}
这是因为你没有为你的combobox设置恰当的store和cell renderer。
用gtk_combo_box_new_text()创建的widget可以直接调用gtk_combo_box_append_text(),如果不是,则需要设置相应的liststore和cellrenderer,可以直接在C代码中实现,也可以在glade中实现 。
在glade里具体操作方法为,在空间树中选中combobox控件,右键弹出菜单,选择Edit,然后设置其model/store(组合框模型),在这个模型中新建一列,类型为gchararray,名称任意(假设为title)。然后选择层次(hierarchy)选项卡,添加一个Cell Renderer,设置类型为文本,设置文字属性为title列(前面组合框模型中的title列)。
/******************************************************************************
程序用于演示下拉菜单的操作,实现了第一个菜单File的子菜单
******************************************************************************/
#include process.h
#include stdlib.h
#include stdio.h
#include dos.h
#include conio.h
#define key_down 80 /* 向下箭头键 */
#define key_up 72 /* 向上箭头键 */
#define key_esc 1 /* ESC键 */
#define key_alt_f 33 /* Alt + F*/
#define key_alt_x 45 /* Alt + X */
#define key_enter 28 /* Enter */
/* 函数声明 */
int get_key();
void box(int startx,int stary,int high,int width);
main()
{
int i,key,x,y,l;
char *menu[]={"File","Edit","Run","Options","Help","Setup","Zoom","Menu"};
char *red[]={"F","E","R","O","H","S","Z","M"};
char *f[]={"Load file", "Save file","Print ","Modify ", "Quit alt_x "};
char buf[16*10*2],buf1[16*2];
while(1)
{
/* 设置屏幕背景颜色,并清除屏幕 */
textbackground(2);
clrscr();
/*创建窗口用于显示菜单栏 */
window(1,1,80,1);
/* 设置文本属性:白底黑字 */
textbackground(15); /* 白色背景 */
textcolor(0); /* 黑色字体 */
clrscr(); /* 清屏 */
window(1,1,80,1);
/* 显示菜单 */
for(i=0,l=0;i8;i++)
{
/* 保存菜单第一个字母的位置,后面要用红色再打一次菜单的第一个字母 */
x=wherex(); /* 当前光标 X坐标 */
y=wherey(); /* 当前光标 Y坐标 */
/* 打印输出菜单 */
cprintf(" %s",menu[i]);
l=strlen(menu[i]);
gotoxy(x,y); /* 移动光标到菜单开始位置 */
/* 用红色输出菜单的第一个字母 */
textcolor(RED);
cprintf(" %s",red[i]);
x=x+l+4;
gotoxy(x,y);
/* 将文本颜色修改为黑色 */
textcolor(BLACK);
}
x=0;
key=0;
while (bioskey(1)==0); /* 等待键盘输入 */
/* 取得按键 */
key=get_key();
/* Alt + X 退出程序*/
if(key==key_alt_x)exit(0);
/* Alt + F 显示File下拉菜单*/
if(key==key_alt_f)
{
/* 设置文本属性:黑底白字 */
textbackground(0);
textcolor(15);
/* 打印输出 File */
gotoxy(2,1);
cprintf("%s",menu[0]);
/* 备份将要被File下拉菜单窗口覆盖的区域到内存buf */
gettext(4,2,18,12,buf);
/* 创建File下拉菜单窗口 */
window(4,2,19,8);
/* 设置文本属性:白底黑字 */
textbackground(15);
textcolor(0);
clrscr();
/* 画边框 */
window(4,2,19,9);
box(1,1,7,16);
/* 打印输出下拉菜单 */
for(i=2; i7;i++)
{
gotoxy(2,i);
cprintf("%s",f[i-2]);
}
/* 备份下拉菜单的第一项到内存bufl,然后用 黑底白字(表示选中) 打印输出第一项 */
gettext(2,2,18,3,buf1);
textbackground(0);
textcolor(15);
gotoxy(2,2);
cprintf("%s",f[0]);
/* 处理按键 */
y=2;
key=get_key();
while(key!=key_alt_xkey!=key_enterkey!=key_esc)
{
/* 上下键 */
/* 用内存buf1恢复当前菜单项,并备份将要被选中的菜单项到buf1,然后用 黑底白字 打印输出将要被选中的菜单项 */
if(key==key_up||key==key_down)
{
puttext(2,y,18,y+1,buf1); /* 恢复之前 黑底白字的项 到 白底黑字*/
if(key==key_up)
y=y==2? 6:y-1; /* 如果往上,到了最上面跳到最下面 */
if(key==key_down)
y=y==6? 2:y+1; /* 如果往下,到了最下面跳到最上面 */
gettext(2,y,18,y+1,buf1); /* 备份当前项(白底黑字) */
textbackground(0); /* 以下4行,用 黑底白字(表示选中) 打印输出 当前项 */
textcolor(15);
gotoxy(2,y);
cprintf("%s",f[y-2]);
}
key=get_key(); /* 等待键盘输入 */
}
/* Alt + X 退出 */
if(key==key_alt_x)
exit(0);
/* Enter */
if(key==key_enter)
{
/* 下拉菜单处理 */
switch(y-1)
{
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 5: exit(0);
default: break;
}
}
/* ESC -关闭下拉菜单,恢复屏幕显示 */
else
{
window(1,1,80,2);
puttext(4,2,19,10,buf);
textbackground(15);
textcolor(0);
gotoxy(2,1);
cprintf("%s",menu[0]);
}
}
}
}
/* 得到按键值 */
int get_key()
{
union REGS rg;
rg.h.ah=0;
int86(0x16,rg,rg);
return rg.h.ah;
}
/* 画边框 */
void box(int startx,int starty,int high,int width)
{
int i;
gotoxy(startx,starty);
putch(0xda);
for (i=startx+1;iwidth;i++)
putch(0xc4);
putch(0xbf);
for(i=starty+1;ihigh;i++)
{
gotoxy(startx,i);
putch(0xb3);
gotoxy(width,i);
putch(0xb3);
}
gotoxy(startx+1,width);
putch(0xc0);
for(i=startx+1;iwidth;i++)
putch(0xc4);
putch(0xd9);
return;
}
首先要定义按键 就是按下什么键时执行什么函数 然后要画出菜单 具体的代码很长 你可以留下个地址给我 我发个类似的东西给你