My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 图形图像与多媒体
和我一起写屏保
作者:未知 时间:2005-07-20 14:15 出处:VC知识库 责编:MyFAQ
              摘要:和我一起写屏保

和我一起写屏保
作者:Alon

下载本文配套代码1:示例工程
下载本文配套代码2:黑客帝国屏保

对于屏幕保护程序,大家应该不会陌生。屏幕保护程序的后缀名是.scr,其实它就是一个可执行的.exe文件。
VC提供了一个支持屏幕保护的开发库scrnsave.lib,这个库已经定制了一个屏幕保护程序的框架结构,开发者只需要在完成相应的函数和提供相应的资源就可以写出自己的屏幕保护程序。
我们所需要完成的函数有:
// 屏幕保护程序的窗口函数,几乎所有的操作都在这里进行

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 <scrnsave.h>
并去掉编辑器自动加入的 #define DLG_SCRNSAVECONFIGURE 101 这一行
因为DLG_SCRNSAVECONFIGURE 已经在 scrnsave.h中定义过了。
现在我们就开始改写前面说过的scrnsave.lib中的函数了,步骤如下:
1. 向工程中加入文件SimpleScr.cpp , 文件的内容如下:
// 程序需要的头文件
#include <windows.h>

#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 并将它拷贝到系统目录下看看运行结果了。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有