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

本文介绍了如何在嵌入式系统中模拟Windows编程中的MessageBox函数,用于创建弹出式对话框。通过自定义的MessageBox函数,可以在没有系统支持的情况下实现类似的功能,包括显示信息和等待用户按键响应。文章强调了屏幕操作在嵌入式系统中的重要性,并分享了实用的屏幕显示处理技巧,帮助改善嵌入式系统的用户体验。
摘要由CSDN通过智能技术生成

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

2008-02-23 05:32:13来源:互联网 阅读 ()

c4468b3f4df77e96b0a416fa2a870fba.png

模拟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上凌乱不堪的显示内容所困扰。

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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值