屏保设计报告

上传人:大米 文档编号:479683600 上传时间:2023-12-16 格式:DOC 页数:12 大小:1.87MB
返回 下载 相关 举报
屏保设计报告_第1页
第1页 / 共12页
屏保设计报告_第2页
第2页 / 共12页
屏保设计报告_第3页
第3页 / 共12页
屏保设计报告_第4页
第4页 / 共12页
屏保设计报告_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《屏保设计报告》由会员分享,可在线阅读,更多相关《屏保设计报告(12页珍藏版)》请在金锄头文库上搜索。

1、青岛理工大学C+课程设计报告院(系): 计算机工程学院 专 业: 计算机科学与技术 学生姓名: 胡松朝 班 级:计算073 学号: 200707046 题 目: 屏幕保护程序起迄日期: 2009.12.212009.12.31 设计地点: 青岛理工大学2#实验楼402 指导教师: 李兰 完成日期: 2009 年 12 月 31 日一、需求分析1、 选做此课题或项目的意义:对于电脑用户来说,选择电脑时,首先提出的指标一定是奔腾、赛扬等一系列与CPU有关的数据,电脑的心脏固然重要,但对于经常与电脑打交道的人来说,电脑的“脸”显示器,同样是最关心的问题之一。如果你每天面对的是一个色彩柔和、清新亮丽的

2、“笑脸”,你在它身边工作一定特别来劲,工作效率也一定会提高。当你买了一台电脑后,希望它的寿命的时间越长越好,这样你既可以享受电脑给你带来的快乐,还可以不要花太多的钱来维护你的电脑。屏幕保护程序可以起到保护你的显示器的作用,这样可以相对减少你的金钱支出。在未启动屏保的情况下,当你长时间不使用电脑的时候显示器的屏幕长时间显示不变的画面,这将会使屏幕发光器件疲劳变色/甚至烧毁/最终使屏幕,某个区域偏色或变暗。 对于CRT的显示器来说,在图形界面的操作系统下,显示屏上显示的色彩多种多样,当用户停止对电脑进行操作时,屏幕显示就会始终固定在同一个画面上,即电子束长期轰击荧光层的相同区域,长时间下去,会因为

3、显示屏荧光层的疲劳效应导致屏幕老化,甚至是显像管被击穿。屏幕保护程序一直作为保护CRT显示屏的最佳帮手,通过不断变化的图形显示使荧光层上的固定点不会被长时间轰击,从而避免了屏幕的损坏。另外,屏幕保护程序所提供的动画效果,可以给你的忙碌生活添加积分乐趣。2、 程序所实现的功能: 本程序为windows操作系统的屏幕保护程序。在程序运行时,会在屏幕最上方出现全屏窗口,自动载入满屏图片,同时由上至下出现大小随机速度随机的白色雪花慢慢摇曳飘落,黑色调的浪漫图片从右至左缓缓流动,伴随着美妙音乐,给人视觉享受。当按下键盘非系统键,或按下鼠标左、右及滚轮键时程序自动退出,为了防止桌面震动带来的影响,鼠标必须

4、移动大于200像素的距离,屏保程序才能退出。二、设计内容1、系统功能模块图:2、系统数据流图如下:3、关键代码:BOOL CMyscreenDlg:OnInitDialog()/初始化对话框CDialog:OnInitDialog();/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/

5、 Set small icon/ TODO: Add extra initialization hereCRect m_rcMain;/设一个矩形对象GetWindowRect(&m_rcMain);/得到窗口并存储LONG style=GetWindowLong(m_hWnd,GWL_STYLE);/得到窗口状态 style &= WS_CAPTION; /Creates a window that has a title bar (includes the WS_BORDER style).SetWindowLong(m_hWnd,GWL_STYLE,style); /设置窗口s_show

6、W = GetSystemMetrics(SM_CXSCREEN); / 得到屏幕宽度s_showH = GetSystemMetrics(SM_CYSCREEN); /得到屏幕高度/show window for (int i=1; iCreateCompatibleDC(&dc);/关联内存 w_pdcmem-SelectObject(&w_bitmap);/图片载入内存 w_showX = 0; /初始为0 sndPlaySound( music.wav , SND_ASYNC | SND_LOOP ); /载入音乐CDialog:OnPaint();void CMyscreenDlg:

7、DrawBitmap()/填充整个窗口,并显示CClientDC dc(this);CDC dcmem;CBitmap bitmap;bitmap.CreateCompatibleBitmap(&dc,s_showW,s_showH);dcmem.CreateCompatibleDC(&dc);dcmem.SelectObject(&bitmap);dcmem.SetBkMode(0);dcmem.FillRect(&CRect(0,0,s_showW,s_showH), &CBrush(RGB(0,0,255);/填充整个屏幕为蓝色(这步可以省)UINT y =0; /从内存读取填充矩形和图

8、片一并拷贝到屏幕上dcmem.StretchBlt( 0,y,s_showW,s_showH, w_pdcmem, w_showX,0,s_showW,s_showH, SRCCOPY);dc.BitBlt(20,0,s_showW,s_showH,&dcmem,0,0,SRCCOPY);/显示在屏幕上void CMyscreenDlg:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultPostMessage(WM_CLOSE);CDial

9、og:OnLButtonDown(nFlags, point);void CMyscreenDlg:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: Add your message handler code here and/or call defaultPostMessage(WM_CLOSE);CDialog:OnKeyDown(nChar, nRepCnt, nFlags);/其他消息响应函数原理如上,不再列出void CMyscreenDlg:OnTimer(UINT nIDEvent) /定时器函数,用于定时刷新窗口实

10、现动态效果w_showX += 1;/每次移动一个像素if(w_showX=1050)/当图片移动大于1050像素时,从新显示 w_showX = 0; DrawBitmap( );/显示位图CDialog:OnTimer(nIDEvent);/定时器1CClientDC dc(this);for (int i=1; i s_showH)/当雪点的纵坐标大于屏幕高度时,调整坐标,更换速度Snowi.x = rand() % s_showW;Snowi.y = -Snowi.speed;Snowi.speed =rand()%10;Point(&dc,Snowi.x,Snowi.y,int(Snowi.speed/4)+1);/保存雪点状态CDialog:OnTimer(nIDEvent);/定时器2void CMyscreenDlg:OnDestroy() CDialog:OnDestroy();/ TODO: Add your message handler code heredelete w_pdcmem;KillTimer(1);/关掉计时器1K

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号