当前位置:编程学习 > VC++ >>

VC打造自己特色的屏幕保护

 

 

 

  首先先给大家介绍一下屏幕保护程序的原理。其实屏幕保护程序就是普通的可执行程序(exe)。只不过Windows把它换了一个扩展名(scr),放在了系统目录下,由操作系统调用而已。对Windows NT和Windows 2000这个目录是C:WINNTsystem32,对于Win95,Win98这个目录是C:Windows和C:Windowssystem

  下面就开始动工建立我们自己的屏保吧。

 

  1. 选择AppWizard建立一个基于对话框的工程,工程名就叫MyScreenSaver好了(在向导的第一步选择:Dialog Based,其他的都采用默认选项)

 

  2. 准备2张800×600的BMP图片(你可以视自己的爱好设置相应的图片数目,例子中我用了两张),并把它们加入工程,ID分别为IDB_BITMAP1和IDB_BITMAP2,注意须保证这两个ID号是连续的,如果你一次性地把这两个文件加入了工程,这两个ID号通常都是连续的。

 

  3. 新建一个类CMyScreenWnd,各项设置如下图所示

 

 

  4. 点击“OK”后弹出一个警告对话框,如下图所示提示我们不能找到基类CWnd定义的头文件,不要管它,点击“确定”就行了。

 

  5. 在MyScreenWnd.h中加入一句:#include "windef.h",windef.h中有基类CWnd的定义

 

  6. 在MyScreenWnd.h文件的CMyScreenWnd类中加入一个公有成员函数,原型如下:

 

  BOOL Create();

 

  7. 在MyScreenWnd.cpp中加入Create()函数的实现代码:

 

BOOL CMyScreenWnd::Create()

 

{

 

if (lpszClassName==NULL)

 

{

 

lpszClassName=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,

 

::LoadCursor(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_NOCURSOR)));

 

//注册类,IDC_NOCURSOR为新建光标的ID(需要用户自己绘制)

 

//这个光标没有任何图案

 

}

 

CRect rect(0,0,::GetSystemMetrics(SM_CXSCREEN),

 

::GetSystemMetrics(SM_CYSCREEN)); //得到显示屏的长度和宽度

 

CreateEx(WS_EX_TOPMOST,lpszClassName,_T(""),WS_VISIBLE | WS_POPUP,

 

rect.left,rect.top,rect.right-rect.left,rect.bottom-rect.top,

 

GetSafeHwnd(),NULL,NULL); //创建一个全屏窗口

 

SetTimer(ID_TIMER,2000,NULL); //设置定时器,2秒换一幅图

 

return TRUE;

 

补充:软件开发 , Vc ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,