现在的位置: 首页 > 综合 > 正文

屏幕保护程序的编写

2013年03月26日 ⁄ 综合 ⁄ 共 2912字 ⁄ 字号 评论关闭
对于屏幕保护程序,大家应该不会陌生。屏幕保护程序的后缀名是.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  <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  并将它拷贝到系统目录下看看运行结果了。  

抱歉!评论已关闭.