-
2021-05-21 18:47:31
用C语言编写屏幕保护程序
2 0 0 5 年 5 月
第 11 卷第 2 期
安庆师范学院学报 (自然科学版)
J o u rna l o f A nq ing Te a c he rs C o lle g e (N a tu ra l S c ie nc e )
M a y. 2 0 0 5
V o l. 11 NO. 2
Ξ
ΞΞ
用C
语言编写屏幕保护程序
胡则辉 , 范
容
(杭州师范学院 信息工程学院, 浙江 杭州 310018)
摘
要: 图形程序是计算机程序中很重要的内容, 我们可以利用C 语言中的图形函数编写出风
格迥异的屏保程序。 本文通过具体程序, 介绍了用C 语言编写屏幕保护程序的基本思路和方法。
关键词: C 语言; 屏幕保护程序; 编程; 输出
中图分类号: T P 312
文献标识码: A
文章编号: 1007- 4260 (2005) 02- 0016- 04
C 语言是世界上应用最广泛的几种语言之一, 应用C 语言可以对数学问题求解或实现其它应用编
程。屏幕保护程序可以用C 语言来实现, 通过编写自己喜爱的屏幕保护程序可以加深对C 语言的了解,
同时可以提高编程者应用编程语言解决实际问题的能力, 培养编程者敏锐的观察力和极强的创造力。
基本理论
1
T u rbo C 提供了非常丰富的图形函数1
, 我们使用这些图形处理函数可以实现各种图形功能, 所有
的图形函数的原型均在 G rap h ic s. h 中。 可以利用这些函数来实现图形模式的初始化, 从而建立独立的
图形程序。
屏幕保护程序一般都是一些简单的动画, 我们可以利用C 语言中的随机函数和延时函数来实现动 态效果。 下面我们简要介绍一下编写屏幕保护程序中常用的几个函数:
( 1) 在屏幕作图之前, 我们必须根据显示适配器的种类将显示器设置成为某种图形模式, 设置屏幕 为图形模式, 可以用下列图形初始化函数:
V o id in itg rap h ( in t fa r 3 d r ive r, in t fa r 3 d r ive r, ch a r fa r 3 p a th ) ; 其中 d r ive r 和m o de 分别表示图 形驱动器和模式, p a th 是指图形驱动器所在的目录路径。
( 2) 有时我们并不知道所用的图形显示器适配器的类型, 或者需要将编写的屏保程序用于不同的
图形驱动器, 我们必须对显示器硬件作自动检测, T u rbo C 中提供了自动检测显示器硬件的函数, 其调 用格式为: V o id de tec tg rap h ( in t 3 d r ive r, in t 3 m o de) ; 为了实现此功能, T C 中还提供了一种更简单的 方法, 就是用 d r ive r= D E T EC T 语句后再跟 in itg rap h () 函数就可以了。
( 3) 为了获得丰富多彩的视觉效果我们需要对屏幕颜色进行设置, 图形模式下常用的屏幕颜色设
置函数有:
Se tb k co lo r () 函数: 该函数用来设置图形屏幕的背景颜色, 其原型为: V o id se tb k co lo r ( in t co lo r) Se tco lo r () 函数: 该函数用来设置作图颜色。 其原型为: V o id se tco lo r ( in t co lo r)
V o id c lea rdev ice (vo id) 函数: 清除屏幕内容函数。
V o id de lay () 函数: 延时函数。
收稿日期: 2004- 12- 27
作者简介: 胡则辉 (1979- ) , 男, 浙江杭州人, 杭州师范学院计算机教育专业研究生。
Ξ
ΞΞ
2实例实现步骤
2. 1满天星
当程序运行后, 会看到屏幕上随机地画出五颜六彩的小圆点, 按任意键退出程序。 (效果见图 1)
图 1 实例 1 效果图
图 2 实例 2 的输出
设计思想: 本例是一个综合性的实例, 主要讲解动画的制作, 用w h ile 循环控制按任意键结束, 利用
随机函数产生点的颜色并将随机函数作为画圆的参数与延时函数配套使用, 得到较迷幻的动画效果。
简单步骤: 1) 图形初始化2 : in itg rap h (&gd r ive r, &gm o de, ”c: \ \ tc3\ \ b g i”) ;
2) 设置不同颜色在不同的地方画圆:
se tco lo r ( ran dom (255) ) ; ?3 设置随机颜色3 ?
c irc le ( ran dom (900) , ran dom (500) , ran dom (3) )
更多相关内容 -
scr屏幕保护程序.rar
2021-10-13 13:17:51scr屏幕保护程序 来自windowsXP操作系统的屏幕保护程序26个(全部正常使用),其中有17个兼容windows10。windows7/8/8.1/2008/2012待测试。...关键字:scr 屏保 屏幕保护程序 xp 16:20 2021/10/12 -
c#制作屏幕保护程序步骤(字幕屏保)
2021-01-21 18:07:34二.C#编写字幕显示屏保程序的关键步骤以及解决方法:(1)设定程序的窗体符合屏幕保护的要求:由于屏幕保护程序就是一个可执行程序,所以在编写屏幕保护程序的时候,首先按照可执行程序来设计。但屏幕保护有自身的... -
visual c++编写.scr屏幕保护程序 黑客帝国屏保 源代码.zip
2021-01-24 20:50:32visual c++编写.scr屏幕保护程序 黑客帝国屏保 源代码.zip -
易语言在程序中启动或禁止屏幕保护例程
2020-07-17 15:46:17易语言在程序中启动或禁止屏幕保护例程源码,在程序中启动或禁止屏幕保护例程,SystemParametersInfo -
Flying Cube 屏幕保护程序 v2.0.1官方版
2020-12-22 02:05:41为您提供Flying Cube 屏幕保护程序下载,Flying Cube是一款简单的屏幕保护程序,具有图形效果,当你工作的过程中临时有一段时间需要做一些其他的事情,你可以通过来Flying Cube保护你的电脑屏幕。使用方法 1.右键... -
屏幕保护程序
2016-12-13 18:24:57java写的屏幕保护程序 里面有bat可执行文件 -
VC 屏幕保护scr 屏保程序范例.rar
2019-07-10 10:33:47VC 实现屏幕保护程序,相信屏保程序大家都不陌生吧,本程序可编译生成 scr...ID值是连续的,IDB_BITMAP1最小,因为是屏保程序,因此响应键盘、鼠标是屏幕保护程序不可缺少的,还涉及到一些计时器添加、删除的相关技巧。 -
屏幕保护程序:屏幕保护程序项目
2021-02-14 21:03:11屏幕保护程序:屏幕保护程序项目 -
web-page-screensaver:将网页显示为屏幕保护程序
2021-05-17 13:47:39网页屏幕保护程序 将网页显示为屏幕保护程序 依存关系 用法(Windows 7及更高版本) 在您的计算机上找到Web-Page-Screensaver.scr,右键单击它 选择“安装”进行安装,或选择“测试”进行测试而不安装 如果安装,将... -
【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序.7z
2021-05-07 14:03:01基于Win32编程开发的黑客帝国数字雨屏幕保护程序 博客链接:https://blog.csdn.net/wlwdecs_dn/article/details/116491242 -
您必须等待至少一分钟,计算机才能将屏幕保护程序设置为使计算机黑屏
2021-06-17 12:01:46有一些快捷键可以直接使计算机黑屏:1. 按下电源按钮一次即可直接使计算机屏幕变黑2. 按组合键“ Fn + F1”可直接使计算机屏幕变黑: Lenovo计算机使用此组合键,如果是其他品牌的计算机,则可以按键盘顶部标有Fn + F...有一些快捷键可以直接使计算机黑屏:
1. 按下电源按钮一次即可直接使计算机屏幕变黑
2. 按组合键“ Fn + F1”可直接使计算机屏幕变黑: Lenovo计算机使用此组合键,如果是其他品牌的计算机,则可以按键盘顶部标有Fn + F系列的按钮月亮
注意: 上述直接使计算机黑屏的方法是使计算机进入睡眠状态,再次按电源按钮即可唤醒
如果您使用的是WIN7系统或XP,则首先单击鼠标右键-个性化-右下角有一个屏幕保护程序-只需设置时间即可.
购买带有很多快捷键的多媒体键盘. 笔记本电脑通常用于办公室. 如果想这么快,那就买一台笔记本电脑.
显示器应该有问题. 准备修理或更换显示器.
锁定屏幕快捷键是Win键+ L键. Win键是带有Windows徽标的键,该键位于Ctrl键和Alt键的中间. 您可以同时按L键锁定屏幕. 所有计算机都可以像这样锁定屏幕. 不只是联想
计算机设置屏幕保护程序需要等待至少一分钟,计算机才会熄灭. 是否有用于直接使屏幕变黑的快捷键: 有直接使计算机屏幕变黑的快捷键: 1.按一次电源按钮直接使计算机屏幕变黑2.按组合键“ Fn + F1”直接使计算机黑屏: 联想计算机是此键的组合,如果是其他品牌的计算机,则可以按键盘顶部标有月球的Fn + F系列按钮. 注意: 上述直接使计算机黑屏的方法是使计算机进入睡眠状态,再次按电源按钮即可唤醒
如何将屏幕保护程序时间设置为少于1分钟: 单击“开始” /搜索/文件或文件夹,在搜索条件窗口中,单击“所有文件和文件夹”的类型,然后输入“ *”. 在文件名框中. scr”,然后在搜索范围下拉列表中,选择存储系统文件的驱动器,单击“搜索”,您很快会发现很多屏幕保护程序,选择所需的屏幕保护程序(您可以双击预览),右键单击文件,在出现的快捷菜单中选择“发送到” /桌面快捷方式,然后返回桌面,右键单击刚发送的屏幕保护程序,选择属性,然后选择“快捷方式”选项卡,在下面有一个快捷键,然后我们定义一个快捷键,如果是F3,然后确认,让我们尝试一下,如何操作,您可以按F3来打开屏幕保护程序.
屏幕保护程序时间设置: 不好意思,如何设置计算机进入屏幕保护程序的时间少于一分钟(例如10秒). : 尝试使用计算机动态屏幕保护程序专家,有一个选项称为“一键进入屏幕保护程序”,单击立即进入屏幕保护程序;您还可以将进入屏幕保护程序的时间设置为1分钟,但不能少于1分钟.
我的计算机找不到“屏幕保护程序”,并且想要设置屏幕保护程序等待启动的分钟数: 您好!因为您没有告诉我们您的操作系统. 以WINDOWS XP为例: 右键单击桌面→属性→屏幕保护程序(顶部)→等待()分钟→调整所需的分钟数,单击确定!为什么不能插入图片?那行不通!如果有帮助,我希望采用它.
我的计算机装有屏幕保护程序,屏幕保护程序时间为一分钟: 是. 1分钟,3分钟,5分钟就可以了.
设置计算机屏幕保护程序的最佳时间是多少分钟,为什么?_: 现在,所有LCD监视器都不需要屏幕保护. 原始的CRT监视器需要由屏幕保护程序保护. 本发明的主要功能是保护隐私并节省功率和醒目. 上
我将计算机的屏幕保护程序等待时间设置为1分钟,但是每次我跳到屏幕保护程序状态时,如果没有任何操作,我会立即跳回到桌面: 桌面振动!屏幕保护程序非常敏感.
时间设置为一分钟后,我的计算机屏幕保护程序将自动进入屏幕保护程序,但是现在设置后一分钟无法访问它,如何解决!: 右键单击空白处在桌面上具有“属性”,然后单击主题,“桌面”,“屏幕保护程序” ...单击屏幕保护程序,您就完成了
最好在几分钟后设置计算机屏幕保护程序,然后将其打开?: 没什么好不好的地方. 这取决于您如何使用它. 如果您不经常使用它,只需将时间缩短几分钟即可.
计算机已将频率保护设置为1分钟,为什么频率保护仍显示在桌面上?: 电源设置,启动设置控制面板,找到内部电源,设置显示器一定有问题一分钟后要关闭就可以了!
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-304270-1.html
-
易语言源码屏幕保护程序.rar
2020-02-16 16:49:43易语言源码屏幕保护程序.rar -
易语言屏幕保护程序
2020-08-21 23:39:36易语言屏幕保护程序源码系统结构:子程序_划线,取屏幕宽度_,取屏幕高度_,取窗口名称,是否运行,GetWindowLong,SetWindowLong,GetClientRect,SetParent,SetWindowPos,隐藏鼠标,取窗口标题长度,取窗口标题 -
照片屏幕保护程序「Photo Screen Saver」-crx插件
2021-03-16 07:24:39带有多个照片来源的屏幕保护程序,包括您的Google相册。 此扩展程序显示屏幕保护程序,该屏幕保护程序由来自多个来源的照片的幻灯片组成。 支持的照片来源包括:*您的Google照片和相册注:不支持其他人共享的相册* ... -
Windows屏保程序
2017-11-11 17:24:10漂亮的屏保程序,酷炫的3D宇宙风景。可用于Windows和Mac -
一个C写的屏幕保护程序-屏保Saver.zip
2019-08-13 15:00:11一个C写的屏幕保护程序-屏保Saver.zip 屏幕保护c语言程序 -
全套WindowsXP自带屏幕保护程序
2013-12-04 16:32:00很多xp系统竟然没有自带的屏保,可下载测试用。 -
屏幕保护程序(屏保)
2014-01-10 10:26:21屏幕保护程序,仅支持windows系统。可以更换自己喜欢的屏幕保护图片。 -
vc编写.scr屏保程序 源代码.zip
2021-01-24 20:51:37visual c++编写.scr屏幕保护程序 源代码.zip -
抖音屏幕保护程序 文字云时钟 汉字时间worldclock win7/8/10 亲测可用
2019-04-04 16:46:07Word Clock之前是运行在MAC上的软件,现在已经移植到了window终端上,这款纯文字排版的屏幕保护程序看上去十分的高端大气上档次。而且据说文字云时钟:Word Clock window7/10版屏保软件提供了用户几十种语言、高度... -
高清3D热带鱼屏保 屏幕保护程序
2020-06-03 15:47:27热带鱼屏保是一款非常逼真的海底世界屏保软件,相当的漂亮,里面的鱼、珊瑚就跟真实的一模一样,仿佛就是在家中添加一个水族箱。该软件可支持根据你得屏幕大小来进行3D渲染,并可自定义设置多种鱼类品种比如:七彩... -
windowsXP屏幕保护程序文件
2013-07-18 20:26:43此文件是windowsXP屏幕保护程序的根本文件。 解压后打开测试即可! -
屏幕保护程序的编写
2021-03-13 18:53:37VC提供了一个支持屏幕保护的开发库scrnsave.lib,这个库已经定制了一个屏幕保护程序的框架结构,开发者只需要在完成相应的函数和提供相应的资源就可以写出自己的屏幕保护程序。讲到这里,我想你对屏幕保护程序到底是...对于屏幕保护程序,大家应该不会陌生。屏幕保护程序的后缀名是.scr,其实它就是一个可执行的.exe文件。
VC提供了一个支持屏幕保护的开发库scrnsave.lib,这个库已经定制了一个屏幕保护程序的框架结构,开发者只需要在完成相应的函数和提供相应的资源就可以写出自己的屏幕保护程序。
讲到这里,我想你对屏幕保护程序到底是什么东东应该有了一个比较清楚的认识了吧!
在VC中,要完成一个屏幕保护程序的编写,
我们所需要完成的函数有:
// 屏幕保护程序的窗口函数,几乎所有的操作都在这里进行
BOOL WINAPI ScreenSaverProc(
HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam);
// 屏幕保护设置对话框的窗口函数
BOOL WINAPI ScreenSaverConfigureDialog(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
// 在这里注册特殊的屏幕保护设置对话框的窗口类
BOOL WINAPI RegisterDialogClasses(
HANDLE hInst);
好了,介绍了以上的内容,接下来我们就写一个最简单的屏幕保护程序:黑屏
跟着我,一步一步做吧。
首先,我们打开VC,建立一个Win32 Application 的工程。工程的名字就叫做SimpleScr好了。
接下来,向工程中加入一个对话框资源。(这个对话框当我们在桌面的属性中设置屏保时,点击“设置”时会看到)步骤如下:
1. 选择菜单 插入->资源类型 出现对话框,在对话框中选择 “Dialog”资源 然后 新建。
2. 保存资源 文件->保存 出现“另存为”对话框,在对话框中写入要保存的文件的名称:
SimpleScr.rc。
3. 将SimpleScr.rc 文件 和 resource.h 文件添加到工程中。
4. 将对话框的ID改为: DLG_SCRNSAVECONFIGURE
5. 编辑我们的对话框,在对话框中加入版本信息了什么的,自由发挥了 :)
6. 打开resource.h 文件修改,加入代码:
#include
并去掉编辑器自动加入的 #define DLG_SCRNSAVECONFIGURE 101 这一行
因为DLG_SCRNSAVECONFIGURE 已经在 scrnsave.h中定义过了。
现在我们就开始改写前面说过的scrnsave.lib中的函数了,步骤如下:
1. 向工程中加入文件SimpleScr.cpp , 文件的内容如下:
// 程序需要的头文件
#include
#pragma comment(lib,"scrnsave.lib") //使用库文件
#include "resource.h"
LRESULT CALLBACK ScreenSaverProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hDC = BeginPaint(hWnd, &ps);
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC, RGB(0x33, 0xcc, 0));
TextOut(hDC, 150, 150, "WWW.VCKBASE.COM", 15);
EndPaint(hWnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
// 缺省的消息处理函数
return DefScreenSaverProc(hWnd,message,wParam,lParam);
}
return 0;
}
BOOL WINAPI ScreenSaverConfigureDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_COMMAND:
//处理 确定 按钮
if (LOWORD(wParam) == IDOK) {
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
else
{
//系统的处理退出命令
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}
BOOL WINAPI RegisterDialogClasses(HANDLE hInst)
{
return TRUE;
}
接下来,所需要做的就是保存文件,编译,还有就是将编译通过的文件后缀改为.scr 并将它拷贝到系统目录下看看运行结果了。
-
screensaver.turnoff:Kodi屏幕保护程序可关闭屏幕以节省电量
2021-05-24 22:54:00Kodi屏幕保护程序可关闭屏幕以节省电量 此Kodi屏幕保护程序可关闭您的电视,投影仪或显示器,因此实际上可以“保存屏幕”。 它是如何工作的 ? 它支持以下显示方法: CEC(内置) 屏幕保护程序使用内部CEC控件... -
Windows虚拟机屏幕保护程序
2021-04-11 05:57:52酷炫Linux屏幕保护程序的Windows版本。 -
C# 屏幕保护程序制作
2022-03-11 08:31:49(1)创建新项目 建好长这样,VS2022是这样,其他版本应该差距不大 ...如果右下角没有属性栏,右键Form1,属性就会出来 ...(4)打开工具栏,我们双击或者把它拉到form1上添加一个Label1 (5)在la...(1)创建新项目
建好长这样,VS2022是这样,其他版本应该差距不大
如果右下角没有属性栏,右键Form1,属性就会出来
(2)先对窗口做一下预处理,屏保肯定是没有边框的,所以要去掉它的边框样式
选择外观下的FormorderStyle,属性设置为None;
效果
(3)设置大小最大化,你总不能让他只保护你的一半吧,你的另一半难道不重要吗?
代码后面会说
(4)打开工具栏,我们双击或者把它拉到form1上添加一个Label1
(5)在label1的属性里找到text,修改文本内容,改啥随意.
(6)修改字体样式成你喜欢的样式
(7)代码阶段。双击Form1窗口,进入内部代码
(8)最大化屏幕代码(给没有最大化选项的阅读者)
private void Form1_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized;//屏幕最大化 }
(9)回到窗口,先点击闪电图标,再找到键,keyDown处输入Form1_keydown
代码里会自动多出一行代码,
private void Form1_keydown(object sender, KeyEventArgs e) { }
(10)代码界面,在上面这个多出的函数里写入,当系统识别到按下任意键时,就会结束整个程序。
Application.Exit();//结束程序
(11)已经可以运行了,但太丑我不要,继续往下,先让文字居中,直接在这里接着写
private void Form1_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized;//屏幕最大化 label1.Location = new Point((Width-label1.Width)/2,(Height -label1.Height)/2);//让屏幕文字居中(水平和垂直) }
(12)背景色和字体色修改
private void Form1_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized;//屏幕最大化 label1.Location = new Point((Width-label1.Width)/2,(Height -label1.Height)/2);//让屏幕文字居中(水平和垂直) this.BackColor = Color.Black;//设置屏幕为黑色 label1.ForeColor = Color.White;//设置字体颜色白色 }
(13)工具箱,组件里添加Timer
写入计时器的属性
timer1.Enabled = true;//设置计时器可用 timer1.Interval = 10;//设置计数器间隔0,01秒
(14)点击timer1组件,属性处点闪电,tick处写入自定义函数名timer1_tick
代码里自动生成空函数
private void timer1_tick(object sender, EventArgs e) { }
(15)添加运动代码
int movx = 5;//水平位移距离 int movy = 5;//垂直位移距离 private void timer1_tick(object sender, EventArgs e) { //位移 label1.Left -= movx; label1.Top -= movy; //碰到边界反弹 if (label1.Left < 0) { movx = -movx; } if (label1.Right>Width) { movx = -movx; } if (label1.Top <0) { movy = -movy; } if (label1.Bottom > Height) { movy = -movy; } }