版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 PAGE PAGE 15摘要該文討論了漢字圖形窗口界面設(shè)計(jì)的一般方法,給出了窗口生成,窗口管理,菜單生成與管理,鼠標(biāo)與鍵盤管理等實(shí)現(xiàn)的子函數(shù),并給出了部分C語(yǔ)言源程序。這些函數(shù)的組合可以設(shè)計(jì)出豐富的漢字圖形窗口界面。一、圖形窗口設(shè)計(jì)函數(shù)主要包括窗口生成與管理函數(shù),如窗口生成,窗口打開(kāi),窗口關(guān)閉,窗口刪除等。1.窗口結(jié)構(gòu)定義方法typedefstructgwinintx0,y0,x1.y1;/*窗口位置及大小*/intBorder;/*窗口邊框類型*/intWcolor;/*窗口背景顏色*/charWstate;/*窗口狀態(tài)標(biāo)志*/charfar*Buffer;/*指向窗口緩沖區(qū)指針*/GWI
2、N;在GWIN中,Border為窗口的邊框?qū)傩?,可以根?jù)不同要求設(shè)計(jì)出多種邊框類型業(yè),以美化窗口界面。2.窗口子函數(shù)窗口生成子函數(shù):Gwin*GwinCreate(x0,y0,x1,y1,border,color)intx0,y0,x1,y1;/*窗口位置及大小*/BorderModeborder;/*窗口邊框類型*/intcolor;/*窗口背景顏色*/窗口顯示子函數(shù):GwinDisplay(GWIN*w)w為用GwinCreate生成的窗口指針,即此函數(shù)畫出窗口。窗口打開(kāi)子函數(shù):GwinOpen(GWIN*w)此函數(shù)調(diào)用GwinDisplay來(lái)顯示窗口,并存儲(chǔ)屏幕。窗口關(guān)閉子函數(shù):Gwin
3、Close(GWIN*w)此函數(shù)關(guān)閉已打開(kāi)的窗口,恢復(fù)屏幕,但此窗口數(shù)據(jù)還保存,可再次打開(kāi)。窗口刪除子函數(shù):GwinKill(GWIN*w)此窗口徹底清除窗口,不可重新打開(kāi)。3.部分程序下面給出實(shí)現(xiàn)上述功能的C語(yǔ)言程序/*WindowsCreate*/#include#include#include#include#include#include#defineCR0 x0d#defineEsc0 x1b#defineLeft0 x4b#defineRight0 x4d#defineUp0 x4d#defineDown0 x50#defineOPEN1/*窗口為打開(kāi)狀態(tài)*/#defineCLOS
4、E0/*窗口為關(guān)閉狀態(tài)*/#defineMOUSE0/*是否有鼠標(biāo)移動(dòng)*/*定義窗口邊框類型*/typedefenumNoBorder,/*普通窗口,系統(tǒng)默認(rèn)值*/TBorder,/*窗口有凸邊框類型*/WBorder,/*窗口有凹邊框類型*/TWBorder,/*窗口有凸凹邊框類型*/WTBorder,/*窗口有凹凸邊框類型*/CBorder,/*窗口有漢字邊框類型*/./*其它窗口類型*/BorderMode;GWIN*GwinCreate(x0,y0,x1,y1,border,color)intx0,y0,x1,y1;BorderModeborder;intcolor;GWIN*w;w=
5、malloc(sizeof(GWIN);w-x0=x0;w-y0=y0;w-x1=x1;w-y1=y1;if(border=NoBorder)w-Border=NoBorder;if(border=WBorder)w-Border=WBorder;if(border=TBorder)w-Border=TBorder;if(border=TWBorder)w-Border=TWBorder;if(border=WTBorder)w-Border=WTBorder;if(border=CBorder)w-Border=CBorder;w-Wcoloe=color;w-Buffer=NULL;ret
6、urn(w);voidGwinDisplay(GWIN*w)if(w-Border=NoBorder)DrawGwin(w,NoBorder);if(w-Border=WBorder)DrawGwin(w,WBorder);if(w-Border=TBorder)DrawGwin(w,TBorder);if(w-Border=WTBorder)DrawGwin(w,TWBorder);if(w-Border=TWBorder)DrawGwin(w,TWBorder);if(w-Border=CBorder)DrawGwin(w,CBorder);voidGwinOpen(GWIN*w)if(w
7、-Wstate=OPEN)return0;w-Buffer=(charfar*)malloc(unsignedint)-imagesize(w-x0,w-y0,w-x1,w-y1)-getimage(w-x0,w-y0,w-x1,w-y1,w-Buffer);w-Wstate=OPEN;GwinDisplay(w);voidGwinClose(GWIN*w)if(w-Wstate=CLOSE)return0;-putimage(w-x0,w-y0,w-Buffer,-GPSET);free(charfar*)w-Buffer);w-Wstate=COLSE;voidGwinKill(GWIN*
8、w)if(w-Wstate=OPEN)GwinClose(w);free(w);轉(zhuǎn)貼于二、菜單窗口界面生成與管理子函數(shù)1.菜單結(jié)構(gòu)定義說(shuō)明typedefstructgmenuGWIN*w;/*含有菜單的窗口*/char*chstring;/*菜單中漢字串指針*/intxnum;/*水平方向菜單分布項(xiàng)*/intynum;/*垂直方向菜單分布項(xiàng)*/inthzcolor/*漢字顏色*/intmnow/*光標(biāo)位置*/intmtotal/*菜單總個(gè)數(shù)*/GMENU;2.菜單生成與管理子函數(shù)菜單生成子函數(shù):GMENU*MenuCreate(x,y,xnum,ynum,border,hzcolor,bcol
9、or,chstring)intx,y;/*菜單左上角位置*/intxnum,ynum;/*菜單在X,Y方向個(gè)數(shù)*/BorderModeborder;/*菜單邊框類型*/inthzcolor;/*漢字顏色*/intbcolor;/*菜單背景顏色*/char*chstring;/*漢字串*/菜單打開(kāi)子函數(shù):MenuOpen(GMENU*m)m為用MenuGreate生成的菜單直針。菜單驅(qū)動(dòng)子函數(shù):MenuDrive(GMENU*m)此函數(shù)提供用鼠標(biāo)或鍵盤選擇菜單項(xiàng)的方法。菜單關(guān)閉子函數(shù):MenuClose(GMENU*m)此函數(shù)關(guān)閉已打開(kāi)的菜單,恢復(fù)屏幕,但此菜單數(shù)據(jù)還保存,可再次打開(kāi)。菜單刪除子
10、函數(shù):MenuKill(GMENU*m)此菜單被徹底清除,不可重新打開(kāi)。3.實(shí)現(xiàn)上述功能子函數(shù)的源程序代碼GMENU*MenuCreate(x,y,xnum,ynum,border,hzcolor,bcolor,chstring)intx,y,xnum,ynum;BorderModeborder;inthzcolor,bcolor;char*chstring;GWIN*w,GMENU*m;m=malloc(sizeof(GMENU);m-=chstring=chstring;m-=xnum=xnum;m-=ynum=ynum;m-=hzcolor=hzcolor;m-=mnow=1m-=mto
11、tal=Number_of_Menu(m-=chstring);w=(GWIN*)GwinCreate(x,y,x+xnum*Longest(chstring),y+(ynum-1)+C0,border,bcolor);m-=w=wreturnm;其中,Number_of_Menu(string)為求串中菜單項(xiàng)個(gè)數(shù)的函數(shù),Longest(string)為求串中最長(zhǎng)項(xiàng)長(zhǎng)度的函數(shù)。其它子函數(shù)可參照窗口函數(shù)設(shè)計(jì)出,此處限于篇幅,不再給出。三、下拉式菜單設(shè)計(jì)方法有了第一,第二節(jié)的窗口設(shè)計(jì)及菜單設(shè)計(jì)函數(shù),可以很方便的定義出下拉式及彈出式菜單,菜單可以層層嵌套,主子關(guān)系及熱鍵可以自由定義,有了窗口及菜單函
12、數(shù),可以組合設(shè)計(jì)出風(fēng)格迥異的應(yīng)用程序界面。本節(jié)的子函數(shù)包括:根菜單生成(主菜單)、下拉式菜單生成、菜單連接、菜單初始化、菜單驅(qū)動(dòng)、菜單關(guān)閉、菜單刪除。1.下拉式菜單結(jié)構(gòu)定義方法typedefstructpmenuGMENU*m;/*定義菜單*/intpstate;/*下拉式菜單狀態(tài)*/intpid;/*菜單標(biāo)識(shí)碼*/structpmenu*Father;/*定義父菜單*/structpmenu*Son/*定義子菜單*/charhotkeyMaxSon+1;/*定義熱鍵*/PMENU;2.下拉式菜單生成與管理子函數(shù)根菜單生成子函數(shù):PMENU*Proot(pid,x,y,border,hzcol
13、or,bcolor,chstring)intpid;/*根菜單標(biāo)識(shí)碼,一般為000*/intx,y;/*菜單在X,Y方向個(gè)數(shù)*/BorderModeborder;/*菜單邊框類型*/inthzcolor;/*漢字顏色*/intbcolor;/*菜單背景顏色*/char*chstring;/*漢字串*/下拉式菜單生成子函數(shù):PMENU*Pcreate(pid,x,y,border,hzcolorbcolor,chstring參數(shù)含義同上,pid值一般取為100,200,300等,利用此函數(shù)可生成普通彈出式菜單。菜單連接子函數(shù):voidPlink(PMENU*p1,intn,PMENU*p2)此函
14、數(shù)建立兩個(gè)菜單p1,p2之間的主次關(guān)系,p1為父菜單,p2為子菜單,執(zhí)行此菜單,則把p2掛在了p1的第n個(gè)菜單項(xiàng)上。下拉式菜單初始化子函數(shù):Pint();菜單關(guān)閉子函數(shù):Pclose();菜單刪除子函數(shù):Pkill();菜單中定義熱鍵子函數(shù):HotKey(PMENU*p1,intn,intVascii);PMENU*p1;/*下拉式菜單p1*/intn;/*菜單p1中菜單個(gè)數(shù)*/intVascii;/*定義熱鍵的ASCII碼值*/利用此函數(shù)可定義彈出式菜單p1中任意項(xiàng)n的鍵盤熱鍵,該鍵的ASCII碼值為Vascii。3.實(shí)現(xiàn)上述功能子函數(shù)的源程序代碼PMENU*RP,*CP;pmenu*Pro
15、ot(pid,x,y,border,hzcolor,bcolor,chstring)intpid,x,y;BorderModeborder;inthzcolor,bcolor;char*chstring;PMENU*p;inti;RP=CP=malloc(sizeof(PMENU);p-pstate=CLOSE;p-pid=pid;p-m=MenuCreate(x,y,Num_of_Menu(chstring),1,border,hzcolor,bcolor,chstring);p-father=NULL;for(i=1;iSoni=NULL;p-hotkeyi=0;return(p);voidPlink(PMENU*p1,intn,PMENU*p2)p1-
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 民政局2025年度離婚協(xié)議書撰寫規(guī)范與模板4篇
- 招生政策調(diào)整
- 2025年度魚塘承包與漁業(yè)產(chǎn)業(yè)鏈整合合同4篇
- 2025年度服裝設(shè)計(jì)大賽參賽作品授權(quán)合同4篇
- 2024年09月江西2024年上饒銀行秋季校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 二零二五年度新型節(jié)能門窗工程承包合同樣本集3篇
- 二零二五版智能家居集成系統(tǒng)采購(gòu)與實(shí)施合同3篇
- 2024年08月福建福建泉州銀行校園招考補(bǔ)招筆試歷年參考題庫(kù)附帶答案詳解
- 維修軟件行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 2024年03月山西浦發(fā)銀行太原分行春季校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 全國(guó)醫(yī)學(xué)博士英語(yǔ)統(tǒng)一考試詞匯表(10000詞全) - 打印版
- 最新《會(huì)計(jì)職業(yè)道德》課件
- 廣東省湛江市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)
- DB64∕T 1776-2021 水土保持生態(tài)監(jiān)測(cè)站點(diǎn)建設(shè)與監(jiān)測(cè)技術(shù)規(guī)范
- ?中醫(yī)院醫(yī)院等級(jí)復(fù)評(píng)實(shí)施方案
- 數(shù)學(xué)-九宮數(shù)獨(dú)100題(附答案)
- 理正深基坑之鋼板樁受力計(jì)算
- 學(xué)校年級(jí)組管理經(jīng)驗(yàn)
- 10KV高壓環(huán)網(wǎng)柜(交接)試驗(yàn)
- 未來(lái)水電工程建設(shè)抽水蓄能電站BIM項(xiàng)目解決方案
- 房屋出租家具電器清單
評(píng)論
0/150
提交評(píng)論