版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 PAGE PAGE 15摘要该文讨论了汉字图形窗口界面设计的一般方法,给出了窗口生成,窗口管理,菜单生成与管理,鼠标与键盘管理等实现的子函数,并给出了部分C语言源程序。这些函数的组合可以设计出丰富的汉字图形窗口界面。一、图形窗口设计函数主要包括窗口生成与管理函数,如窗口生成,窗口打开,窗口关闭,窗口删除等。1.窗口结构定义方法typedefstructgwinintx0,y0,x1.y1;/*窗口位置及大小*/intBorder;/*窗口边框类型*/intWcolor;/*窗口背景颜色*/charWstate;/*窗口状态标志*/charfar*Buffer;/*指向窗口缓冲区指针*/GWI
2、N;在GWIN中,Border为窗口的边框属性,可以根据不同要求设计出多种边框类型业,以美化窗口界面。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/*窗口为打开状态*/#defineCLOS
4、E0/*窗口为关闭状态*/#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)为求串中最长项长度的函数。其它子函数可参照窗口函数设计出,此处限于篇幅,不再给出。三、下拉式菜单设计方法有了第一,第二节的窗口设计及菜单设计函数,可以很方便的定义出下拉式及弹出式菜单,菜单可以层层嵌套,主子关系及热键可以自由定义,有了窗口及菜单函
12、数,可以组合设计出风格迥异的应用程序界面。本节的子函数包括:根菜单生成(主菜单)、下拉式菜单生成、菜单连接、菜单初始化、菜单驱动、菜单关闭、菜单删除。1.下拉式菜单结构定义方法typedefstructpmenuGMENU*m;/*定义菜单*/intpstate;/*下拉式菜单状态*/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为子菜单,执行此菜单,则把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. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Lesson 28 Five pounds too dear说课稿-2025-2026学年初中英语第三册新概念英语
- 小学消防心理课程设计2025
- 2026新教材语文 统编版七年级语文下册第八讲赏析小说写法教学课件
- 糖尿病自主神经病变代谢调节与营养支持
- 糖尿病控制对术后感染的影响
- 初中2025年预防艾滋病主题班会说课稿
- 精神科PBL术语心理评估规范
- 精准医疗远程实施术语与安全阈值
- 精准医学在神经血管性疾病中的转化应用
- 窄带成像放大内镜对Barrett食管分型的意义
- 四川省省属事业单位考试《综合知识》复习大纲考试笔试高频考点题库附答案解析
- 2023年冯晓强策略班课堂笔记
- GB/T 14561-2019消火栓箱
- 生态环境规划-课件
- 态度在民航服务工作中的运用课件
- Unit4 写作课 A Funny Story教案-高中英语北师大版(2019)选择性必修第二册
- 果树学实验-主要果实类型与构造认识解答课件
- 山东省青岛市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- DB4201∕T 646-2021 轨道交通工程运营期结构监测技术规程
- 仁爱版初中英语单词汇总
- 人教版八年级下英语单词默写版与完整版
评论
0/150
提交评论