汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx

上传人:b****5 文档编号:18742268 上传时间:2023-01-01 格式:DOCX 页数:6 大小:16.78KB
下载 相关 举报
汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx_第1页
第1页 / 共6页
汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx_第2页
第2页 / 共6页
汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx_第3页
第3页 / 共6页
汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx_第4页
第4页 / 共6页
汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx

《汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx(6页珍藏版)》请在冰豆网上搜索。

汉字图形窗口界面设计方法及函数编程技巧Word文档下载推荐.docx

intx0,y0,x1,y1;

BorderModeborder;

intcolor;

窗口显示子函数:

GwinDisplay(GWIN*w)

w为用GwinCreate生成的窗口指针,即此函数画出窗口。

窗口打开子函数:

GwinOpen(GWIN*w)

此函数调用GwinDisplay来显示窗口,并存储屏幕。

窗口关闭子函数:

GwinClose(GWIN*w)

此函数关闭已打开的窗口,恢复屏幕,但此窗口数据还保存,可再次打开。

窗口删除子函数:

GwinKill(GWIN*w)此窗口彻底清除窗口,不可重新打开。

3.部分程序

下面给出实现上述功能的C语言程序

/*WindowsCreate*/

#include

#defineCR0x0d

#defineEsc0x1b

#defineLeft0x4b

#defineRight0x4d

#defineUp0x4d

#defineDown0x50

#defineOPEN1/*窗口为打开状态*/

#defineCLOSE0/*窗口为关闭状态*/

#defineMOUSE0/*是否有鼠标移动*/

/*定义窗口边框类型*/

typedefenum{

NoBorder,/*普通窗口,系统默认值*/

TBorder,/*窗口有凸边框类型*/

WBorder,/*窗口有凹边框类型*/

TWBorder,/*窗口有凸凹边框类型*/

WTBorder,/*窗口有凹凸边框类型*/

CBorder,/*窗口有汉字边框类型*/

.../*其它窗口类型*/

}BorderMode;

GWIN*GwinCreate(x0,y0,x1,y1,border,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);

}

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-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*w)

if(w-Wstate==OPEN)GwinClose(w);

free(w);

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

1.菜单结构定义说明

typedefstructg

menu{

GWIN*w;

/*含有菜单的窗口*/

char**chstring;

/*菜单中汉字串指针*/

intxnum;

/*水平方向菜单分布项*/

intynum;

/*垂直方向菜单分布项*/

inthzcolor/*汉字颜色*/

intmnow/*光标位置*/

intmtotal/*菜单总个数*/

}GMENU;

2.菜单生成与管理子函数

菜单生成子函数:

GMENU*MenuCreate(x,y,xnum,ynum,border,h

zcolor,bcolor,chstring)

intx,y;

/*菜单左上角位置*/

intxnum,ynum;

/*菜单在X,Y方向个数*/

/*菜单边框类型*/

inthzcolor;

/*汉字颜色*/

intbcolor;

/*菜单背景颜色*/

/*汉字串*/

菜单打开子函数:

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)

intx,y,xnum,ynum;

inthzcolor,bcolor;

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

returnm;

其中,Number_of_Menu(string)为求串中菜单项个数的函数,Longest(string)为求串中最长项长度的函数。

其它子函数可参照窗口函数设计出,此处限于篇幅,不再给出。

三、下拉式菜单设计方法

有了第一,第二节的窗口设计及菜单设计函数,可以很方便的定义出下拉式及弹出式菜单,菜单可以层层嵌套,主子关系及热键可以自由定义,有了窗口及菜单函数,可以组合设计出风格迥异的应用程序界面。

本节的子函数包括:

根菜单生成(主菜单)、下拉式菜单生成、菜单连接、菜单初始化、菜单驱动、菜单关闭、菜单删除。

1.下拉式菜单结构定义方法

typedefstructpmenu{

GMENU*m;

/*定义菜单*/

intpstate;

/*下拉式菜单状态*/

intpid;

/*菜单标识码*/

structpmenu*Father;

/*定义父菜单*/

structpmenu*Son/*定义子菜单*/

charhotkey[MaxSon+1];

/*定义热键*/

}PMENU;

2.下拉式菜单生成与管理子函数

根菜单生成子函数:

PMENU*Proot(pid,x,y,border,hzcolor,bco

lor,chstring)

/*根菜单标识码,一般为000*/

/*汉字颜色*/

/*菜单背景颜色*/

/*汉字串*/

下拉式菜单生成子函数:

PMENU*Pcreate(pid,x,y,border,hzcol

orbcolor,chstring

参数含义同上,pid值一般取为100,200,300等,利用此函数可生成普通弹出式菜单。

菜单连接子函数:

voidPlink(PMENU*p1,intn,PMENU*p2)

此函数建立两个菜单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。

PMENU*RP,*CP;

pmenu*Proot(pid,x,y,border,hzcolor,bcolor,chstring)

intpid,x,y;

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,hzc

olor,bcolor,chstring);

p-father=NULL;

for(i=1;

iMaxSon+1;

i++)

p-Son[i]=NULL;

p-hotkey[i]=0;

return(p);

voidPlink(PMENU*p1,intn,PMENU*p2)

p1-Son[n]=p2;

p2-Father=p1;

其它子函数可参照菜单函数设计出,此处限于篇幅,不再给出。

四、其它辅助函数

计算菜单项个数的函数

intNumber_Of_Menu(char**chstring)

for(i=0;

chstring[i]!

=NULL;

i++);

return(i);

键盘与鼠标处理子函数

intGet_Key_Mouse(int*x,int*y)

此函数用来同时接收键盘及鼠标,有按键时返回该键的ASCII码,有鼠标操作时返回鼠标的X,Y座标,提供给程序作处理。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1