版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 PAGE PAGE 15摘要該文討論了漢字圖形窗口界面設計的一般方法,給出了窗口生成,窗口管理,菜單生成與管理,鼠標與鍵盤管理等實現的子函數,并給出了部分C語言源程序。這些函數的組合可以設計出豐富的漢字圖形窗口界面。一、圖形窗口設計函數主要包括窗口生成與管理函數,如窗口生成,窗口打開,窗口關閉,窗口刪除等。1.窗口結構定義方法typedefstructgwinintx0,y0,x1.y1;/*窗口位置及大小*/intBorder;/*窗口邊框類型*/intWcolor;/*窗口背景顏色*/charWstate;/*窗口狀態(tài)標志*/charfar*Buffer;/*指向窗口緩沖區(qū)指針*/GWI
2、N;在GWIN中,Border為窗口的邊框屬性,可以根據不同要求設計出多種邊框類型業(yè),以美化窗口界面。2.窗口子函數窗口生成子函數:Gwin*GwinCreate(x0,y0,x1,y1,border,color)intx0,y0,x1,y1;/*窗口位置及大小*/BorderModeborder;/*窗口邊框類型*/intcolor;/*窗口背景顏色*/窗口顯示子函數:GwinDisplay(GWIN*w)w為用GwinCreate生成的窗口指針,即此函數畫出窗口。窗口打開子函數:GwinOpen(GWIN*w)此函數調用GwinDisplay來顯示窗口,并存儲屏幕。窗口關閉子函數:Gwin
3、Close(GWIN*w)此函數關閉已打開的窗口,恢復屏幕,但此窗口數據還保存,可再次打開。窗口刪除子函數:GwinKill(GWIN*w)此窗口徹底清除窗口,不可重新打開。3.部分程序下面給出實現上述功能的C語言程序/*WindowsCreate*/#include#include#include#include#include#include#defineCR0 x0d#defineEsc0 x1b#defineLeft0 x4b#defineRight0 x4d#defineUp0 x4d#defineDown0 x50#defineOPEN1/*窗口為打開狀態(tài)*/#defineCLOS
4、E0/*窗口為關閉狀態(tài)*/#defineMOUSE0/*是否有鼠標移動*/*定義窗口邊框類型*/typedefenumNoBorder,/*普通窗口,系統默認值*/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);轉貼于二、菜單窗口界面生成與管理子函數1.菜單結構定義說明typedefstructgmenuGWIN*w;/*含有菜單的窗口*/char*chstring;/*菜單中漢字串指針*/intxnum;/*水平方向菜單分布項*/intynum;/*垂直方向菜單分布項*/inthzcolor/*漢字顏色*/intmnow/*光標位置*/intmtotal/*菜單總個數*/GMENU;2.菜單生成與管理子函數菜單生成子函數:GMENU*MenuCreate(x,y,xnum,ynum,border,hzcolor,bcol
9、or,chstring)intx,y;/*菜單左上角位置*/intxnum,ynum;/*菜單在X,Y方向個數*/BorderModeborder;/*菜單邊框類型*/inthzcolor;/*漢字顏色*/intbcolor;/*菜單背景顏色*/char*chstring;/*漢字串*/菜單打開子函數:MenuOpen(GMENU*m)m為用MenuGreate生成的菜單直針。菜單驅動子函數:MenuDrive(GMENU*m)此函數提供用鼠標或鍵盤選擇菜單項的方法。菜單關閉子函數:MenuClose(GMENU*m)此函數關閉已打開的菜單,恢復屏幕,但此菜單數據還保存,可再次打開。菜單刪除子
10、函數:MenuKill(GMENU*m)此菜單被徹底清除,不可重新打開。3.實現上述功能子函數的源程序代碼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)為求串中菜單項個數的函數,Longest(string)為求串中最長項長度的函數。其它子函數可參照窗口函數設計出,此處限于篇幅,不再給出。三、下拉式菜單設計方法有了第一,第二節(jié)的窗口設計及菜單設計函數,可以很方便的定義出下拉式及彈出式菜單,菜單可以層層嵌套,主子關系及熱鍵可以自由定義,有了窗口及菜單函
12、數,可以組合設計出風格迥異的應用程序界面。本節(jié)的子函數包括:根菜單生成(主菜單)、下拉式菜單生成、菜單連接、菜單初始化、菜單驅動、菜單關閉、菜單刪除。1.下拉式菜單結構定義方法typedefstructpmenuGMENU*m;/*定義菜單*/intpstate;/*下拉式菜單狀態(tài)*/intpid;/*菜單標識碼*/structpmenu*Father;/*定義父菜單*/structpmenu*Son/*定義子菜單*/charhotkeyMaxSon+1;/*定義熱鍵*/PMENU;2.下拉式菜單生成與管理子函數根菜單生成子函數:PMENU*Proot(pid,x,y,border,hzcol
13、or,bcolor,chstring)intpid;/*根菜單標識碼,一般為000*/intx,y;/*菜單在X,Y方向個數*/BorderModeborder;/*菜單邊框類型*/inthzcolor;/*漢字顏色*/intbcolor;/*菜單背景顏色*/char*chstring;/*漢字串*/下拉式菜單生成子函數:PMENU*Pcreate(pid,x,y,border,hzcolorbcolor,chstring參數含義同上,pid值一般取為100,200,300等,利用此函數可生成普通彈出式菜單。菜單連接子函數:voidPlink(PMENU*p1,intn,PMENU*p2)此函
14、數建立兩個菜單p1,p2之間的主次關系,p1為父菜單,p2為子菜單,執(zhí)行此菜單,則把p2掛在了p1的第n個菜單項上。下拉式菜單初始化子函數:Pint();菜單關閉子函數:Pclose();菜單刪除子函數:Pkill();菜單中定義熱鍵子函數:HotKey(PMENU*p1,intn,intVascii);PMENU*p1;/*下拉式菜單p1*/intn;/*菜單p1中菜單個數*/intVascii;/*定義熱鍵的ASCII碼值*/利用此函數可定義彈出式菜單p1中任意項n的鍵盤熱鍵,該鍵的ASCII碼值為Vascii。3.實現上述功能子函數的源程序代碼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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年攝影服務合同的具體要求和約定2篇
- 二零二五版環(huán)保設施運營合同附屬協議模板3篇
- 遼寧稅務高等??茖W校《課程標準與教材研究》2023-2024學年第一學期期末試卷
- 2025年上半年重慶中煙工業(yè)限責任公司招聘100人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年通化市事業(yè)單位公開招聘擬聘用人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧省營口市建檔立卡貧困家庭高校畢業(yè)生基層服務招考易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧省大連市事業(yè)單位招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年貴州黔南都勻市統一招聘事業(yè)單位工作人員68人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年貴州黔東南州各縣(市)事業(yè)單位招聘工作人員1691人筆試易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年貴州銅仁印江自治縣司法局招聘5人重點基礎提升(共500題)附帶答案詳解-1
- 英語名著閱讀老人與海教學課件(the-old-man-and-the-sea-)
- 學校食品安全知識培訓課件
- 全國醫(yī)學博士英語統一考試詞匯表(10000詞全) - 打印版
- 最新《會計職業(yè)道德》課件
- DB64∕T 1776-2021 水土保持生態(tài)監(jiān)測站點建設與監(jiān)測技術規(guī)范
- ?中醫(yī)院醫(yī)院等級復評實施方案
- 數學-九宮數獨100題(附答案)
- 理正深基坑之鋼板樁受力計算
- 學校年級組管理經驗
- 10KV高壓環(huán)網柜(交接)試驗
- 未來水電工程建設抽水蓄能電站BIM項目解決方案
評論
0/150
提交評論