《C語言的菜單制作》PPT課件.ppt_第1頁
《C語言的菜單制作》PPT課件.ppt_第2頁
《C語言的菜單制作》PPT課件.ppt_第3頁
《C語言的菜單制作》PPT課件.ppt_第4頁
《C語言的菜單制作》PPT課件.ppt_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C語言的菜單制作,圖形化菜單,要完成一個(gè)菜單需要考慮以下幾個(gè)方面: 菜單的定義 保存部分屏幕 恢復(fù)期望的屏幕 用戶的響應(yīng)值傳遞,如何顯示菜單,可以利用輸出字符畫出主界面上的邊框和主菜單的背景區(qū)域。然后再顯示主菜單,最后畫出下拉菜單。(仿TC) 利用ASCII中的特殊字符。如218為,196為,179為,191為,192為,217為來畫出應(yīng)用程序的邊框,菜單的定義,思考用什么來表示菜單及其子菜單,Struct menu char name10 /*菜單名*/ char sub1020 /*下拉菜單*/ int n /*幾個(gè)選項(xiàng)*/,示例,system(cls); /*調(diào)用系統(tǒng)的清屏命令*/ st

2、dlib.h textbackground(BLUE);/*將文本背景設(shè)置為藍(lán)色*/ conio.h window(1,1,25,80); /*定義活動(dòng)文本模式窗口*/ conio.h clrscr(); /*清除文本模式窗品*/ textx=3; texty=2; /*光標(biāo)初始化位置*/ gotoxy(1,2); /*在文本窗口中設(shè)置光標(biāo)*/ printf(%c,218); /*畫左上角*/ for(i=0;i78;i+) printf(%c,196); /*畫水平直線*/ printf(%c,191);/*畫右上角*/ for(i=3;i=23;i+) gotoxy(1,i); print

3、f(%c,179); /*畫垂直線*/ gotoxy(80,i); printf(%c,179); printf(%c,192); /*畫左下角*/ for(i=0;i78;i+) printf(%c,196); printf(%c,217); /*畫右下角*/ gotoxy(1,1); textcolor(7); /*設(shè)置文本顏色灰色*/ for(i=0;i80;i+) cprintf(%c,219);/*用符號(hào)實(shí)現(xiàn)畫主菜單的灰色背景區(qū)*,Cprintf與printf,1.cprintf函數(shù)用于向當(dāng)前窗口輸出數(shù)據(jù),比如你用window函 數(shù)定義一個(gè)窗口 window(20,10,60,20)

4、,那么當(dāng)你調(diào)用cprintf 函數(shù)時(shí),cprintf的輸出就是相對于20,10, 60,20這個(gè)窗 口,當(dāng)輸出的字符串長度大于當(dāng)前窗口長度時(shí),會(huì)在當(dāng)前窗 口自動(dòng)換行。 2.cprintf函數(shù)可以配合setcolor,setbkcolor等函數(shù)使用,而調(diào) 用printf函數(shù)時(shí)會(huì)忽略這些 函數(shù)執(zhí)行的結(jié)果,Cprintf和printf,比如執(zhí)行:setcolor(RED); cprintf(Hello world); printf(Hello); 將會(huì)在屏幕上顯示紅色字符串:Hello world 和白色字符串(因?yàn)閟etcolor函數(shù)對printf函數(shù)不起作用)Hello 在原來的C語言中,cpr

5、intf中的c代表console,就是控制 臺(tái).(conio.h中的con也是這個(gè)意思)到了windows也繼承了這 個(gè)淵源。 按照設(shè)計(jì)者本來的意圖,printf是標(biāo)準(zhǔn)輸出,就是指可以完 全不知道你輸出的對象,只是以標(biāo)準(zhǔn)的文本流方式輸出。 cprintf是與終端相關(guān)的,要用到一些系統(tǒng)平臺(tái),硬件設(shè)備相關(guān)的 特性,所以可以有顏色等很多東西可供選擇,同時(shí)也削弱了移 植性,所以cprintf是非標(biāo)準(zhǔn)的,定義菜單,在前面定義了表示菜單的結(jié)構(gòu)體?,F(xiàn)在需要定義具體的菜單。菜單項(xiàng)應(yīng)該放在結(jié)構(gòu)體數(shù)組中。如mainmenui就表示水平的第i個(gè)菜單(主菜單)為菜單的名字,而mainmen

6、ui.subj則表示第i個(gè)主菜單下的第j個(gè)下拉選項(xiàng),示例,void Selectitem() strcpy(,“File”); /*下面的具體選項(xiàng)補(bǔ)空格是為了各菜單黑色背景相同*/ strcpy(ml0.str0,“New ); strcpy(ml0.str1,“Load ); strcpy(ml0.str2,“Save ); strcpy(ml0.str3,Exit ); ml0.n=6; /*保存菜單的項(xiàng)數(shù)*/ .,畫出菜單,定義了每一個(gè)具體的菜單項(xiàng),現(xiàn)在需要把它們通通都顯示出來。對于正常菜單來說,顯示菜單灰底黑色且首字符為紅色的樣式,表示菜單未選中。但當(dāng)光標(biāo)移動(dòng)到某個(gè)菜單

7、選項(xiàng)上時(shí),則需要改變背景和文本顏色,以示該選項(xiàng)被選中,示例,*顯示主單名*/ void DrawSelectitem() for(i=0;i3;i+) RedText(i,1,); /*顯示主菜單名,且首字母為紅色*/ /*正常顯示菜單*/ void RedText(int x,int y,char *z) textbackground(7); /*設(shè)置背景顏色為淺灰色*/ gotoxy(3+x*20,y); for(j=0;zj;j+) if(j=0) textcolor(RED);/*第一個(gè)字母顯示紅色*/ else textcolor(BLACK); /*設(shè)置黑色*/ c

8、printf(%c,zj); /*輸出菜單名*/,顯示選中的菜單示例,*顯示選中菜單*/ void BlackText(int x,int y,char *z) textbackground(0); /*設(shè)置背景顏色為黑色*/ textcolor(15); /*設(shè)置文本顏色為白色*/ gotoxy(3+20*x,y);/*定位坐標(biāo)*/ cputs(z); /*輸出菜單名字符串*/,畫邊框和畫下拉菜單,為突出顯示菜單,需要為下拉菜單設(shè)定背景顏色和文本顏色,并填加邊框。設(shè)定邊框的左上角坐標(biāo)為l和u,右下角的坐標(biāo)為r和d。 注意:此邊框和前面畫的不一樣,前面是畫的整個(gè)應(yīng)用程序的邊框,*畫邊框函數(shù)*/

9、 void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor) textbackground(bcolor); /*背景顏色*/ textcolor(bcolor); /*文本顏色*/ for(i=l;i=r;i+) /*輸出背景區(qū)域*/ for(j=u;j=d;j+) gotoxy(i,j); printf(%c,219); /*輸出背景字符*/ textcolor(tcolor);/*邊框顏色*/ for(i=u+1;id;i+) /*在背景區(qū)域內(nèi)輸出邊框線*/ gotoxy(l,i); cprintf(%c,179); /*垂

10、直線*/ gotoxy(r,i); cprintf(%c,179); for(i=l+1;ir;i+) gotoxy(i,u);cprintf(%c,196); /*水平線*/ gotoxy(i,d); cprintf(%c,196); gotoxy(l,u); cprintf(%c,218);/*左上角*/ gotoxy(r,u); cprintf(%c,191);/*右上角*/ gotoxy(l,d); cprintf(%c,192);/*左下角*/ gotoxy(r,d); cprintf(%c,217); /*右下角*/,畫下拉菜單,當(dāng)選擇了主菜單后,就需要調(diào)用畫下拉菜單函數(shù)。首先保存

11、當(dāng)前區(qū)域,以備將來恢復(fù),然后返選顯示主菜單,同時(shí)調(diào)用畫邊框函數(shù)顯示下拉菜單的邊框,在下拉菜單區(qū)域內(nèi)顯示各菜單選項(xiàng),設(shè)置默認(rèn)選項(xiàng)為第一項(xiàng),其余各項(xiàng)首字符為紅色,*顯示具體下拉選擇項(xiàng)目*/ void DrawMl(int n) gettext(1,1,80,25,save);/*保存被掩蓋的地方*/ BlackText(n,1,);/*反選顯示主菜單*/ DrawFrame(3+20*n-1,2,3+20*n+19,3+mln.n,0,7);/*下拉菜單的邊框*/ for(i=3;i3+mln.n;i+)/*輸出所選菜單各選項(xiàng)*/ if(i=3) BlackText(n,i,mln

12、.stri-3);/*默認(rèn)選中第一項(xiàng)*/ else RedText(n,i,mln.stri-3);/*其余各項(xiàng)首字符紅色顯示*/ gotoxy(79,1); MoveMl(n,3);/*菜單選項(xiàng)的控制*/,菜單選項(xiàng)的控制,選擇菜單的時(shí)候,可以接受的鍵盤操作可以是水平方向和垂直方向。 當(dāng)所按鍵為: ESC鍵,恢復(fù)打開菜單前的界面,退出循環(huán)。 Left左光標(biāo)鍵,恢復(fù)打開當(dāng)前下拉菜單前的界面,顯示前一個(gè)下拉菜單,即取消當(dāng)前的下拉菜單,顯示新的下拉菜單。等等,最后一步了,如何知用戶按了哪個(gè)鍵喃? 鍵盤的操作分兩類:一個(gè)是在屏幕編輯區(qū)的操作,另一個(gè)是在菜單區(qū)的操作。 需要使用全局變量來記錄當(dāng)前光標(biāo)的位置。 需要具體定義某個(gè)鍵對應(yīng)的操作。 需要使用循環(huán)一直監(jiān)聽,直到用戶退出,完整示例,Menu.c 同學(xué)們認(rèn)真研究一下再寫,函數(shù)名: bioskey 功 能: 直接使用BIOS服務(wù)的鍵盤接口 函數(shù)原型:int bioskey (int cmd) 說明:bioskey()的函數(shù)原型在bios.h中 bioskey()完成直接鍵盤操作,cmd的值決定執(zhí)行什么操作。 cmd = 0: 當(dāng)cmd是0,bioskey()返回下一個(gè)在鍵盤鍵入的 值(它將等待到按下一個(gè)鍵)。它返回一個(gè)16位的二進(jìn)制數(shù),包 括兩個(gè)不同的值。當(dāng)按下一個(gè)普通鍵時(shí),它的低8位數(shù)存放該字 符的ASCII碼,高8位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論