- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言实训四轻院大时钟屏幕保护程序
“轻院大时钟”屏幕保护程序
设计人:廖永红
本实训是一年级新生在学习基本法语知识后,进行的技能扩展训练,提高学生应用知识、发现知识的能力,拓宽学生对C语言编程应用的现解,包括工具认识、应用类别认识(标准C编程、Window C编程)。
实训战略目标:(学习方法)
初步学会从网上、MSDN、技术书籍等有目的地查阅技术资料的能力,认识到获取资料的重要性。
在学习中认识到:哪些东西是需要学习掌握、详细了解、懂得编写的,哪此信息、资料是符号性的、规定的、第三方的,不需要我们去记忆,只要会查找到并摘取就行了。(学会轻松学习,不要被复杂的假像吓吧,树立自已能行的信心)。
认识到基础语法只是程序的粘合制,还有大量的领域知识及其相关的函数库、组件,需要我们去认识。
死记是一种最无效的学习方法,“大概知道有这么个函数及它是用来做什么的”比“记得这个函数的单词、原型、参数要求及用法”更重要,不知道可能查啊。
阅读别人程序、做几个完整的趣味程序是最好的学习方法。
实训战术目标:(技术知识)
使用基本语法(if/while/for/switch等)表达要解决问题的逻辑的能力
了解屏幕保护程序的需求与设计,程序特点与调用原理,时钟的需求与设计
了解.net下控制台编程及windows编程简化框架
学会使用时间(如:time()、localtime())、数学(如:sin()、cos())、按键处理(如:kbhit()、getch())的有关函数。
掌握window下窗体绘图的机制、步骤、各种GDI函数的使用(参考资料), 了解异或绘图模式、透明绘图的原现与步骤。
项目工作过程
需求分析与信息的获取
屏幕保护程序本来就是一种可执行的exe文件,将其文件扩展名(.exe)改为.scr,然后把它复制放到系统目录(windows\system32),就可以在桌面上设置其为当前屏保(桌面-属性-屏幕保护程序)。屏幕保护程序由系统“空闲超时”时自动运行,当用户触碰任一键时,程序退出。我们这里要做的屏保是:当系统“空闲超时”时在屏幕上呈现一个大时钟,指示当前时间,并指针会嘀嗒走动。(需求)
图1 屏保界面示意图
动手编程之前,大家要从网上或MSDN搜寻相关的技术资料:如何用C语言编程在屏幕上绘图?有哪些绘图函数?绘图机制如何?如可实现指针的运动?用控制台方式还是用windows编程模式?如用我们掌握的控制台方式,又如何在屏保期间隐藏控制台窗体?如何编程实现透明图象?等等。大家亲手去搜索查找,从中获取对项目有用的技术资料。附件为是搜到的一技术资料。
建立工程及设计程序框架
建立项目工程:打开《Microsoft Visual Studio .NET 2003》,建立一个名为gdqysln空白方案,指定方案的文件夹位置。在“解决方案资源管理器”中右击方案,选“添加”-“新建项目”,新建一个名为MineClock的项目(Visual C++项目, win32控制台项目)。
设计程序框架如下:
int main(int argc, _TCHAR* argv[])
{
做绘图的准备工作:取得屏幕(画板),了解屏幕的宽高属性,准备好画笔、画刷
把原有的屏幕进行备份,这样,在屏保结束时可能恢复原屏幕景像
把时钟背景图象(文件)装载入内存的图象结构中
把时钟图象画到屏幕上,在屏幕上得到时钟底图(静止部分)
取得当前时间,并转换、分离出时、分、秒数
用数学公式,据时、分、秒数,计算时针、分针、秒针的未端点坐标值
画出时针、分针、秒针
while(1)
{
擦除上次画的时针、分针、秒针
取得当前时间,并转换、分离出时、分、秒数
用数学公式,据时、分、秒数,计算时针、分针、秒针的未端点坐标值
重新画出时针、分针、秒针
Sleep(1000);//程序暂停,等待1秒钟
if (触碰了键)
{
恢复屏幕原图到屏幕
exit(0);
}
}
}
编写实现代码
在程序文件中包含所需的头文件, 设置有关的宏常数
#include stdafx.h
#include windows.h //windows标准API头文件,包括绘图API函数
#include math.h //数学函数的头文件
#include time.h //时间相关函数的头文件
#include conio.h //输入输出有关头文件,包括kbhit()函数
#define LEN_H 80 //时针长度
#define LEN_M 100
文档评论(0)