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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、清屏命令*/ stdlib.h textbackground(BLUE);/*將文本背景設置為藍色*/ conio.h window(1,1,25,80); /*定義活動文本方式窗口*/ conio.h clrscr(); /*去除文本方式窗品*/ textx=3; texty=2; /*光標初始化位置*/ gotoxy(1,2); /*在文本窗口中設置光標*/ printf(%c,218); /*畫左上角*/ for(i=0;i78;i+) printf(%c,196); /*畫程度直線*/ printf(%c,191);/*畫右上角*/ for(i=3;i=23;i+) gotoxy(1,

3、i); printf(%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); /*設置文本顏色灰色*/ for(i=0;i80;i+) cprintf(%c,219);/*用符號實現(xiàn)畫主菜單的灰色背景區(qū)*/Cprintf與printf1.cprintf函數(shù)用于向當前窗口輸出數(shù)據(jù),比如他用window函數(shù)定義一個窗口 window(20,10

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

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

6、enui.subj那么表示第i個主菜單下的第j個下拉選項。例如 void Selectitem() strcpy(,“File); /*下面的詳細選項補空格是為了各菜單黑色背景一樣*/ strcpy(ml0.str0,“New ); strcpy(ml0.str1,“Load ); strcpy(ml0.str2,“Save ); strcpy(ml0.str3,Exit ); ml0.n=6; /*保管菜單的項數(shù)*/ . 畫出菜單 定義了每一個詳細的菜單項,如今需求把它們統(tǒng)統(tǒng)都顯示出來。對于正常菜單來說,顯示菜單灰底黑色且首字符為紅色的款式,表示菜單未選中。但當光標挪動到某個

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

8、色第一個字母顯示紅色*/ else textcolor(BLACK); /*設置黑色設置黑色*/ cprintf(%c,zj); /*輸出菜單名輸出菜單名*/ 顯示選中的菜單例如 /*顯示選中菜單*/ void BlackText(int x,int y,char *z) textbackground(0); /*設置背景顏色為黑色*/ textcolor(15); /*設置文本顏色為白色*/ gotoxy(3+20*x,y);/*定位坐標*/ cputs(z); /*輸出菜單名字符串*/ 畫邊框和畫下拉菜單 為突出顯示菜單,需求為下拉菜單設定背景顏色和文本顏色,并填加邊框。設定邊框的左上角坐

9、標為l和u,右下角的坐標為r和d。 留意:此邊框和前面畫的不一樣,前面是畫的整個運用程序的邊框。/*畫邊框函數(shù)畫邊框函數(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ū)域內輸出邊框線在背景區(qū)域內輸出邊框線*/ 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); /*右右下角下角*/畫下拉菜單 中選擇了主菜單后,就需求調用畫下拉菜單函數(shù)。首先保管當前區(qū)域,以備未來恢復,然后返選顯示主菜單,同時調用畫邊框函數(shù)顯示下拉菜單的邊框,在下拉菜單區(qū)域內顯示各菜單項選擇項,設置默許選項為第一項,其他各項首字符為紅色。 /*顯示詳細下拉選擇工程*/ 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+)/*輸出所選菜單各選項*/ if(i=3) BlackText(n,i,mln.stri-3);/*默許選中第一項*/ else RedText(n,i,mln.stri-3);/*其他各項首字符紅色顯示*/ gotoxy(79,1); MoveMl(n,3);/*菜單項選擇項的控制*/ 菜單項選擇項的控制 選擇菜單的時候,可以接受的鍵盤操作可以是程度方向和垂直方向。 當所按鍵為: ESC鍵,恢復翻開菜單前的界面,退出循環(huán)。 Left左光標

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

溫馨提示

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

評論

0/150

提交評論