esc退出
創(chuàng)新互聯(lián)云計算的互聯(lián)網(wǎng)服務提供商,擁有超過13年的服務器租用、綿陽服務器托管、云服務器、網(wǎng)頁空間、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗,已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務許可證。專業(yè)提供云主機、網(wǎng)頁空間、域名注冊、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設置恰當?shù)膕tore和cell renderer。
用gtk_combo_box_new_text()創(chuàng)建的widget可以直接調(diào)用gtk_combo_box_append_text(),如果不是,則需要設置相應的liststore和cellrenderer,可以直接在C代碼中實現(xiàn),也可以在glade中實現(xiàn) 。
在glade里具體操作方法為,在空間樹中選中combobox控件,右鍵彈出菜單,選擇Edit,然后設置其model/store(組合框模型),在這個模型中新建一列,類型為gchararray,名稱任意(假設為title)。然后選擇層次(hierarchy)選項卡,添加一個Cell Renderer,設置類型為文本,設置文字屬性為title列(前面組合框模型中的title列)。
/******************************************************************************
程序用于演示下拉菜單的操作,實現(xiàn)了第一個菜單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 */
/* 函數(shù)聲明 */
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();
/*創(chuàng)建窗口用于顯示菜單欄 */
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下拉菜單窗口覆蓋的區(qū)域到內(nèi)存buf */
gettext(4,2,18,12,buf);
/* 創(chuàng)建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]);
}
/* 備份下拉菜單的第一項到內(nèi)存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)
{
/* 上下鍵 */
/* 用內(nèi)存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;
}
首先要定義按鍵 就是按下什么鍵時執(zhí)行什么函數(shù) 然后要畫出菜單 具體的代碼很長 你可以留下個地址給我 我發(fā)個類似的東西給你