手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

C语言嵌入式系统编程之屏幕操作(2)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
 模拟MessageBox函数

  MessageBox函数,这个Windows编程中的终极猛料,不知道是多少入门者第一次用到的函数。还记得我们第一次在Windows中利用MessageBox输出 "Hello,World!"对话框时新奇的感觉吗?无法统计,这个世界上究竟有多少程式员学习Windows编程是从MessageBox("Hello,World!",…)开始的。在我本科的学校,广泛流传着一个词汇,叫做"’Hello,World’级程式员",意指入门级程式员,但似乎"’Hello,World’级"这个说法更搞笑而形象。

图2给出了两种永恒经典的Hello,World对话框,一种只具备"确定",一种则包含"确定"、"取消"。是的,MessageBox的确有,而且也应该有两类!这完全是由特定的应用需求决定的。

  嵌入式系统中没有给我们提供MessageBox,但是鉴于其功能强大,我们需要模拟之,一个模拟的MessageBox函数为:

  

  /******************************************

  /* 函数名称: MessageBox

  /* 功能说明: 弹出式对话框,显示提醒用户的信息

  /* 参数说明: lpStr --- 提醒用户的字符串输出信息

  /* TYPE --- 输出格式(ID_OK = 0, ID_OKCANCEL = 1)

  /* 返回值: 返回对话框接收的键值,只有两种 KEY_OK, KEY_CANCEL

  /******************************************

  typedef enum TYPE { ID_OK,ID_OKCANCEL }MSG_TYPE;

  extern BYTE MessageBox(LPBYTE lpStr, BYTE TYPE)

  {

   BYTE keyValue = -1;

  

   ClearScreen(); /* 清除屏幕 */

   DisplayString(xPos,yPos,lpStr,TRUE); /* 显示字符串 */

   /* 根据对话框类型决定是否显示确定、取消 */

   switch (TYPE)

   {

    case ID_OK:

     DisplayString(13,yPos High 1, " 确定 ", 0);

     break;

    case ID_OKCANCEL:

     DisplayString(8, yPos High 1, " 确定 ", 0);

     DisplayString(17,yPos High 1, " 取消 ", 0);

     break;

    default:

     break;

   }

   DrawRect(0, 0, 239, yPos High 16 4); /* 绘制外框 */

   /* MessageBox是模式对话框,阻塞运行,等待按键 */

   while( (keyValue != KEY_OK)    (keyValue != KEY_CANCEL) )

   {

    keyValue = getSysKey();

   }

   /* 返回按键类型 */

   if(keyValue== KEY_OK)

   {

    return ID_OK;

   }

   else

   {

    return ID_CANCEL;

   }

  }

  上述函数和我们平素在VC 等中使用的MessageBox是何等的神似啊?实现这个函数,您会看到他在嵌入式系统中的妙用是无穷的。

  总结

  本篇是本系列文章中技巧性最深的一篇,他提供了嵌入式系统屏幕显示方面一些很巧妙的处理方法,灵活使用他们,我们将不再被LCD上凌乱不堪的显示内容所困扰。

  屏幕乃嵌入式系统生存之重要辅助,面目可憎之显示将另用户逃之夭夭。屏幕编程若处理不好,将是软件中最不系统、最混乱的部分,笔者曾深受其害。



文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS