屏幕保护程序是什么类型的工程?是怎么个思想做的?

ssbelle 2003-08-23 08:30:52
是属于mfc程序了吗?在单文档里选吗?
还是在哪个地方选?
我指的是用vc建立新工程时选哪个
做的时候是怎么做的?
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
approach 2003-08-23
  • 打赏
  • 举报
回复
A sample:
http://www.codeproject.com/useritems/mikesscreensaver.asp
approach 2003-08-23
  • 打赏
  • 举报
回复
http://ahzhuo.myrice.com/research/ScreenSaver.htm
----------------
如何编写屏幕保护程序(转)

对于屏幕保护程序,大家不会陌生吧?一般屏幕保护程序都是一些设计精美、变幻无穷的动感艺术图形程序或者是一些赏心悦目、多姿多彩的图像程序,所以许多人都对屏幕保护程序有不错的印象,或多或少都钟情于某类屏幕保护程序,让它在计算机“发呆”了一段时间后,自动开始运行。据说屏幕保护程序主要有两种功能:1.保护显示屏幕的荧光粉不会因为长时间显示移幅静态图像而被烧坏;2.隐藏屏幕上的敏感的信息。我觉得屏幕保护程序还有一个功能,就是它漂亮精美的画面可以美化电脑,很有欣赏价值。

大家可能观察到屏幕保护程序的后缀名是.scr,那是什么文件格式啊?能产生这么美轮美奂的图形效果。呵呵,其实它就是.exe,只不过改了个后缀名罢了,系统能够自动识别,并当作.exe来执行。不过可不是任何.exe直接改了后缀名就可以当作屏保来用了,屏幕保护程序是一种特殊的WINDOWS程序,它必须按照一定的规则来编写才能做出真正的屏保程序。这里就来做个介绍。

VC提供了一个支持屏幕保护的开发库scrnsave.lib,这个库已经定制了一个屏幕保护程序的框架结构,开发者只需要在完成相应的函数和提供相应的资源就可以了,它们是:

要实现的函数(已经在scrnsave.h中有声明了):

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); // 在这里注册特殊的屏幕保护设置对话框的窗口类

要准备的些资源(ID是预先定义在scrnsave.h中的,需要在resource.h中加入#include <scrnsave.h>和删除重复的ID):

DLG_SCRNSAVECONFIGURE // 对话框资源
ID_APP // 程序图标资源
IDS_DESCRIPTION // 程序描述字符串资源

一般情况下,屏幕保护程序都依赖于定时机制来产生匀速的动画效果,典型的方法就是收到WM_CREATE消息的时候用SetTimer()函数创建一个定时器,在受到WM_DESTROY消息的时候用KillTimer()函数销毁定时器,而在每次收到WM_TIMER消息的时候进行绘图操作。通常情况下,我们必须把没有处理过的消息传递给缺省的屏幕保护窗口函数处理(实际上处理过的消息传递给它也无妨)。

对于屏幕保护设置对话框窗口函数,则像一般的窗口函数一样的处理,只不过对话框资源ID必须使用scrnsave.h中预先定义好的ID号。

还有,在RegisterDialogClasses()函数中,你可以根据你设计的屏保设置对话框的需要,注册特殊的窗口类,比如说,你的对话框包含了comctl32的控件,你就需要在这里使用函数InitCommonControls()注册这些控件的窗口类。

另外,有一点小小的技巧:在VC的Project->Settings->Link选项卡中可以设置输出的文件名,你可以将输出的文件名的后缀改为.scr,使它直接输出屏幕保护程序文件,而不必每次都费力地去改名。

最后,如果还有什么不明白的地方,可以参考我制作的屏幕保护程序:深海生物 的源代码(可以在“作品一览”栏目中下载软件和源代码)。剩下的,就是你来发挥自己的想象力,编制出漂亮的屏幕保护程序了。

 

lanfanghelanfanghe 2003-08-23
  • 打赏
  • 举报
回复
生成应用程序(也许是基于对话框的),在Project的Settings中分别改变Debug和Release,将Link页的Out put file”项的、、、exe改成、、、scr,搞定。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧