云计算百科
云计算领域专业知识百科平台

屏幕界面程序设计-编写彩色汉字弹出式菜单

 弹出式菜单是简单的,但也是最重要的一种菜单,它的特点是在屏幕上任何时刻都可以出现一个弹出式菜单。弹出式菜单被设计成“弹出”并显示的一个窗口,选择在窗口中垂直排列,而且第一个选项为高亮,反显正文。用户可以用快键或点中方式进行菜单选择。目前在大多数流行软件中,弹出式菜单用得最为普遍。如Boland公司的Turbo系列软件,弹出式菜单编制得相当漂亮。编写弹出式菜单有一定的规则,设计时一般必须有以下几部分:

 保存菜单出现前的部分屏幕

 显示菜单边框(可省去)

 显示菜单正文

 等待用户响应

 处理用户响应(该步可分支出其它菜单)

 恢复屏幕为原始状态

1. 保存菜单出现前的部分屏幕

 要保存屏幕上的原始内容,必须读取并贮存各屏幕位置上的当前值,用int 10H的8号子功能从某一屏幕位置读一个字符,将返回该字符及其在当前光标出的属性。int 10H的8号子功能调用的入口参数如下:

 调用: AH=08

   BH=显示页

返回: AH=属性字节

   AL=ASCII字符码

 下面的函数save-video(),先读取部分屏幕,将其中的信息存入缓冲区,然后清除该部分屏幕。

void save_video(int startx,int starty,int endx,int endy,unsigned int* buf_ptr)

{

 union REGS r;

 register int i,j;

 

 for(i=startx;i<endx+1;i++)

 {

  for(i=starty;i<endy+1;i++)

  {

   goto_xy(j,i);

   r.h.ah = 8;

   r.h.bh = 0;

 

   *buf_ptr++ = int86(0x10,&r,&r);

   puchar(\’\’);

  }

 }

}

 save_video()函数的头四个参数指出所保存区域的左上角及右下角的X,Y坐标。参数buf_ptr是一个整型指针,它指向保存信息的存贮区域,该存贮区域是在调用Save-video函数之前被分配的一块足够容纳被保存屏幕内容的存贮空间。goto-xy(j,i)是光标定位函数,它不断地移动光标扫描过被保存屏幕的每一部分,它使用BIOS 10H号中断的2号子功能。2号子功能的入口参数如下:

 调用: AH=02H

   BH=页号(图形方式时置0)

DH=行(Y坐标)

   DL=列(X坐标)

返回: 无

goto-xy()函数的源代码如下:

void goto_xy(int x,int Y)

{

 union REGS regs;

 regs.h.ah = 2;

 regs.h.dL = y;

 regs.h.dh = x;

 regs.h.bh = 0;

 

 int6(0x10,&regs,&regs);

}

2. 显示菜单边的函数

 由于本节开发的彩色汉字弹出式菜单函数基于中文文本操作系统,所以菜单的边框是中文方式下的双字节汉字制表符。构成菜单边框的制表符有六种,这些制表符作为汉字对待,因而须首先构造一个显示汉字字符串的函数chineseputs(),chineseputs()函数调用BIOS int 10H的9号子功能显示汉字字符串,10H的09号功能入口参数如下:

 调用: AH=09H

   BH=显示页

BL=属性(字符方式)或颜色(图形方式)

   CX=写字符计数(重复因子)

返回: 无

void chineseputs(int x,int y,char* p,int attrib)

{

 union REGS r;

 while(*p)

 {

  r.h.ah = 2;//定位光标

  r.h.dl = x++;

  r.h.dh = y;

&nb

赞(0)
未经允许不得转载:网硕互联帮助中心 » 屏幕界面程序设计-编写彩色汉字弹出式菜单
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!