欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 计算机应用 > 汉字图形窗口界面设计方法及函数编程技巧

汉字图形窗口界面设计方法及函数编程技巧

日期:2023-01-24 阅读量:0 所属栏目:计算机应用


摘要 该文讨论了汉字图形窗口界面设计的一般方法,给出了窗口生成,窗口管理,菜单生成与管理,鼠标与键盘管理等实现的子函数,并给出了部分c语言源程序。这些函数的组合可以设计出丰富的汉字图形窗口界面。

一、图形窗口设计函数
主要包括窗口生成与管理函数,如窗口生成,窗口打开,窗口关闭,窗口删除等。

1.窗口结构定义方法
typedef struct gwin {
int x0,y0,x1.y1; /*窗口位置及大小*/
int border; /*窗口边框类型*/
int wcolor; /*窗口背景颜色*/
char wstate; /*窗口状态标志*/
char far *buffer; /*指向窗口缓冲区指针*/
}gwin;
在gwin中,border为窗口的边框属性,可以根据不同要求设计出多种边框类型业,以美化窗口界面。

2.窗口子函数
窗口生成子函数:gwin * gwincreate(x0,y0,x1,y1,border,colo
r)
int x0,y0,x1,y1; /*窗口位置及大小*/
bordermode border; /*窗口边框类型*/
int color; /*窗口背景颜色*/
窗口显示子函数:gwindisplay(gwin *w)
w为用gwincreate生成的窗口指针,即此函数画出窗口。
窗口打开子函数:gwinopen(gwin * w)
此函数调用gwindisplay来显示窗口,并存储屏幕。
窗口关闭子函数:gwinclose(gwin * w)
此函数关闭已打开的窗口,恢复屏幕,但此窗口数据还保存,可再次打开。
窗口删除子函数:gwinkill(gwin * w)此窗口彻底清除窗口,不可重新打开。

3.部分程序
下面给出实现上述功能的c语言程序
/*windows create*/
#include
#include
#include
#include
#include
#include
#define cr 0x0d
#define esc 0x1b
#define left 0x4b
#define right 0x4d
#define up 0x4d
#define down 0x50
#define open 1 /*窗口为打开状态*/
#define close 0 /*窗口为关闭状态*/
#define mouse 0 /*是否有鼠标移动*/
/*定义窗口边框类型*/
typedef enum {
noborder,/*普通窗口,系统默认值*/
tborder,/*窗口有凸边框类型*/
wborder,/*窗口有凹边框类型*/
twborder,/*窗口有凸凹边框类型*/
wtborder,/*窗口有凹凸边框类型*/
cborder,/*窗口有汉字边框类型*/
... /*其它窗口类型*/
}bordermode;
gwin * gwincreate(x0,y0,x1,y1,border,color)
int x0,y0,x1,y1;
bordermode border;
int color;
{
gwin *w;
w=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;
return(w);
}
void gwindisplay(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);
}
void gwinopen(gwin * w)
{
if(w->wstate==open)return 0;
w->buffer=(char far *)malloc((unsigned int))
-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);
}
void gwinclose(gwin * w)
{
if(w->wstate==close)return 0;
-putimage(w->x0,w->y0,w->buffer,-gpset);
free((char far *) w->buffer);
w->wstate=colse;
}
void gwinkill(gwin * w)
{
if(w->wstate==open)gwinclose(w);
free(w);
}

二、菜单窗口界面生成与管理子函数

1.菜单结构定义说明
typedef struct g

menu{
gwin * w; /*含有菜单的窗口*/
char * * chstring;/*菜单中汉字串指针*/
int xnum;/*水平方向菜单分布项*/
int ynum;/*垂直方向菜单分布项*/
int hzcolor/*汉字颜色*/
int mnow /*光标位置*/
int mtotal/*菜单总个数*/
}gmenu;

2.菜单生成与管理子函数
菜单生成子函数:gmenu * menucreate(x,y,xnum,ynum,border,h
zcolor,bcolor,chstring)
int x,y;/*菜单左上角位置*/
int xnum,ynum;/*菜单在x,y方向个数*/
bordermode border;/*菜单边框类型*/
int hzcolor; /*汉字颜色*/
int bcolor; /*菜单背景颜色*/
char * * chstring; /*汉字串*/
菜单打开子函数:menuopen(gmenu * m)
m为用menugreate生成的菜单直针。
菜单驱动子函数:menudrive(gmenu * m)
此函数提供用鼠标或键盘选择菜单项的方法。
菜单关闭子函数:menuclose(gmenu *m)
此函数关闭已打开的菜单,恢复屏幕,但此菜单数据还保存,可再次打开。
菜单删除子函数:menukill(gmenu * m)
此菜单被彻底清除,不可重新打开。

3.实现上述功能子函数的源程序代码
gmenu * menucreate(x,y,xnum,ynum,border,hzcolor,bcolor,c
hstring)
int x,y,xnum,ynum;
bordermode border;
int hzcolor,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=1
m->=mtotal=number_of_menu(m->=chstring);
w=(gwin *)gwincreate(x,y,x+xnum * longest(chstring),
y+(ynum-1)+c0,border,bcolor);
m->=w=w
return m;
}
其中,number_of_menu(string)为求串中菜单项个数的函数,longest(string)为求串中最长项长度的函数。
其它子函数可参照窗口函数设计出,此处限于篇幅,不再给出。

三、下拉式菜单设计方法
有了第一,第二节的窗口设计及菜单设计函数,可以很方便的定义出下拉式及弹出式菜单,菜单可以层层嵌套,主子关系及热键可以自由定义,有了窗口及菜单函数,可以组合设计出风格迥异的应用程序界面。本节的子函数包括:根菜单生成(主菜单)、下拉式菜单生成、菜单连接、菜单初始化、菜单驱动、菜单关闭、菜单删除。

1.下拉式菜单结构定义方法
typedef struct pmenu{
gmenu * m;/*定义菜单*/
int pstate; /*下拉式菜单状态*/
int pid; /*菜单标识码*/
struct pmenu *father; /*定义父菜单*/
struct pmenu *son /*定义子菜单*/
char hotkey[maxson+1];/*定义热键*/
}pmenu;

2.下拉式菜单生成与管理子函数
根菜单生成子函数:pmenu *proot(pid,x,y,border,hzcolor,bco
lor,chstring)
int pid;/*根菜单标识码,一般为000*/
int x,y;/*菜单在x,y方向个数*/
bordermode border;/*菜单边框类型*/
int hzcolor;/*汉字颜色*/
int bcolor;/*菜单背景颜色*/
char * * chstring;/*汉字串*/
下拉式菜单生成子函数:pmenu *pcreate(pid,x,y,border,hzcol
or bcolor,chstring
参数含义同上,pid值一般取为100,200,300等,利用此函数可生成普通弹出式菜单。
菜单连接子函数:void plink(pmenu * p1,int n,pmenu * p2)
此函数建立两个菜单p1,p2之间的主次关系,p1为父菜单,p2为子菜单,执行此菜单,则把p2挂在了p1的第n个菜单项上。
下拉式菜单初始化子函数:pint();
菜单关闭子函数:pclose();
菜单删除子函数:pkill();
菜单中定义热键子函数:hotkey(pmenu *p1,int n,int vascii);
pmenu *p1;/*下拉式菜单p1*/
int n;/*菜单p1中菜单个数*/
int vascii;/*定义热键的ascii码值*/
利用此函数可定义弹出式菜单p1中任意项n的键盘热键,该键的ascii码值为vascii。

3.实现上述功能子函数的源程序代码
pmenu *rp,*cp;
pmenu * proot(pid,x,y,border,hzcolor,bcolor,chstring)
int pid,x,y;
bordermode border;
int hzcolor,bcolor;
char * * chstring;
{
pmenu *p;
int i;
rp=cp=malloc(sizeof(pmenu));
p->pstate=close;
p->pid=pid;
p->m=menucreate(x,y,num_of_menu(chstring),1,border,hzc
olor,bcolor,chstring);
p->father=null;
for(i=1;i{
p->son[i]=null;
p->hotkey[i]=0;
}
return(p);
}
void plink(pmenu *p1,int n,pmenu *p2)
{
p1-son[n]=p2;
p2->father=p1;
}
其它子函数可参照菜单函数设计出,此处限于篇幅,不再给出。

四、其它辅助函数
计算菜单项个数的函数
int number_of_menu(char * * chstring)
{
int i;
for(i=0;chstring[i]!=null;i++);
return(i);
}
键盘与鼠标处理子函数
int get_key_mouse(int *x,int *y)
此函数用来同时接收键盘及鼠标,有按键时返回该键的ascii码,有鼠标操作时返回鼠标的x,y座标,提供给程序作处理。

本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/244259.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学