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

下載本文檔

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

文檔簡(jiǎn)介

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

2、清屏命令*/ stdlib.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); /*畫(huà)左上角*/ for(i=0;i78;i+) printf(%c,196); /*畫(huà)程度直線*/ printf(%c,191);/*畫(huà)右上角*/ for(i=3;i=23;i+) gotoxy(1,

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

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

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

6、enui.subj那么表示第i個(gè)主菜單下的第j個(gè)下拉選項(xiàng)。例如 void Selectitem() strcpy(,“File); /*下面的詳細(xì)選項(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ù)*/ . 畫(huà)出菜單 定義了每一個(gè)詳細(xì)的菜單項(xiàng),如今需求把它們統(tǒng)統(tǒng)都顯示出來(lái)。對(duì)于正常菜單來(lái)說(shuō),顯示菜單灰底黑色且首字符為紅色的款式,表示菜單未選中。但當(dāng)光標(biāo)挪動(dòng)到某個(gè)

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

8、色第一個(gè)字母顯示紅色*/ else textcolor(BLACK); /*設(shè)置黑色設(shè)置黑色*/ cprintf(%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); /*輸出菜單名字符串*/ 畫(huà)邊框和畫(huà)下拉菜單 為突出顯示菜單,需求為下拉菜單設(shè)定背景顏色和文本顏色,并填加邊框。設(shè)定邊框的左上角坐

9、標(biāo)為l和u,右下角的坐標(biāo)為r和d。 留意:此邊框和前面畫(huà)的不一樣,前面是畫(huà)的整個(gè)運(yùn)用程序的邊框。/*畫(huà)邊框函數(shù)畫(huà)邊框函數(shù)*/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ū)域輸出背景區(qū)域*/ for(j=u;j=d;j+) gotoxy(i,j); printf(%c,219); /*輸出背景字符輸出背景字符*/ textcolor(tc

10、olor);/*邊框顏色邊框顏色*/ for(i=u+1;id;i+) /*在背景區(qū)域內(nèi)輸出邊框線在背景區(qū)域內(nèi)輸出邊框線*/ gotoxy(l,i); cprintf(%c,179); /*垂直線垂直線*/ 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);/*右上右上角角*/

11、 gotoxy(l,d); cprintf(%c,192);/*左下角左下角*/ gotoxy(r,d); cprintf(%c,217); /*右右下角下角*/畫(huà)下拉菜單 中選擇了主菜單后,就需求調(diào)用畫(huà)下拉菜單函數(shù)。首先保管當(dāng)前區(qū)域,以備未來(lái)恢復(fù),然后返選顯示主菜單,同時(shí)調(diào)用畫(huà)邊框函數(shù)顯示下拉菜單的邊框,在下拉菜單區(qū)域內(nèi)顯示各菜單項(xiàng)選擇項(xiàng),設(shè)置默許選項(xiàng)為第一項(xiàng),其他各項(xiàng)首字符為紅色。 /*顯示詳細(xì)下拉選擇工程*/ void DrawMl(int n) gettext(1,1,80,25,save);/*保管被掩蓋的地方*/ BlackText(n,1,);/*反選顯示主菜單*

12、/ 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.stri-3);/*默許選中第一項(xiàng)*/ else RedText(n,i,mln.stri-3);/*其他各項(xiàng)首字符紅色顯示*/ gotoxy(79,1); MoveMl(n,3);/*菜單項(xiàng)選擇項(xiàng)的控制*/ 菜單項(xiàng)選擇項(xiàng)的控制 選擇菜單的時(shí)候,可以接受的鍵盤(pán)操作可以是程度方向和垂直方向。 當(dāng)所按鍵為: ESC鍵,恢復(fù)翻開(kāi)菜單前的界面,退出循環(huán)。 Left左光標(biāo)

13、鍵,恢復(fù)翻開(kāi)當(dāng)前下拉菜單前的界面,顯示前一個(gè)下拉菜單,即取消當(dāng)前的下拉菜單,顯示新的下拉菜單。等等最后一步了! 如何知用戶按了哪個(gè)鍵喃? 鍵盤(pán)的操作分兩類(lèi):一個(gè)是在屏幕編輯區(qū)的操作,另一個(gè)是在菜單區(qū)的操作。 需求運(yùn)用全局變量來(lái)記錄當(dāng)前光標(biāo)的位置。 需求詳細(xì)定義某個(gè)鍵對(duì)應(yīng)的操作。 需求運(yùn)用循環(huán)不斷監(jiān)聽(tīng),直到用戶退出。完好例如 Menu.c 同窗們仔細(xì)研討一下再寫(xiě)函數(shù)名: bioskey 功 能: 直接運(yùn)用BIOS效力的鍵盤(pán)接口 函數(shù)原型:int bioskey (int cmd) 闡明:bioskey()的函數(shù)原型在bios.h中 bioskey()完成直接鍵盤(pán)操作,cmd的值決議執(zhí)行什么操作。 cmd = 0: 當(dāng)cmd是0,bioskey()前往下一個(gè)在鍵盤(pán)鍵入的值它將等待到按下一個(gè)鍵。它前往一個(gè)16位的二進(jìn)制數(shù),包括兩個(gè)不同的值。當(dāng)按下一個(gè)普通鍵時(shí),它的低8位數(shù)存放該字符的ASCII

溫馨提示

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

評(píng)論

0/150

提交評(píng)論