如何利用C Builder 5.0 实现屏幕保护程式的研…
2008-02-23 05:31:01来源:互联网 阅读 ()
原理:屏幕保护程式的文档名是SCR 文档,其实就是个标准的.exe文档,他有二部份组成:保护程式执行
界面、保护程式配置界面。同时为了防止屏幕保护程式的重复执行和屏幕刷新带来问题屏幕保护程式要处理Windows的几个消息就能够了。最后为了使保护程式能够按照用户以前配置的参数运行,采用了注册表技术来保存用户的配置信息。
现以制作一个屏幕保护程式为例介绍如下:
1、在C Builder 5.0中建立一个含有两个表单Form1和Form2 的工程文档Project1。其Form1用来配置运行参数,Form2用来执行屏幕保护程式.
在Form1中添加如下控件:
Name Caption
Label1 运行速度
Button1 确定
Button2 取消
Edit1
在Form2中添加如下控件
Name Property Value
Timer1 Interval 10
2 、在Unit1.h中添加如下代码:
#include "registr.hpp"
private:
TRegistry MyReg;
TRegistry MyReg;
3 、在TForm1的OnShow事件中添加如下代码:
void __fastcall TForm1::Form1Show(TObject *Sender)
{
MyReg=new TRegistry;
MyReg->RootKey=HKEY_LOCAL_MACHINE;
MyReg->OpenKey("Software\\MyCompany\\Remember",true);
Edit1->Text=MyReg->ReadInteger("Interval");//从注册表中读取屏幕保护程式的时间配置信息//
}
4 、在Form1的Button1的Click事件中添加如下代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MyReg->WriteInteger("Intervl",Edit1->Text.ToInt( ));
MyReg->Free( );//向注册表中写入屏幕保护程式的时间信息//
Close( );
}
5 、在Fom1的Button2的Click事件中添加如下代码:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close( );
}
6、在Unit2.h中添加如下代码:
Public:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_ERASEBKGND,TWMEraseBkgnd,WMEraseBkgnd)
MESSAGE_HANDLER(WM_ACTIVATE,TWMActivate,WMActivate)
MESSAGE_HANDLER(WM_SYSCOMMAND,TWMSysCommand,WMSysCommand)
END_MESSAGE_MAP(TForm)//定义要处理的Windows消息//
int x1,x2,x3 ,x4,x5,x6;
private:
void __fastcall CreateParams(TCreateParams &Params);
void __fastcall WMEraseBkgnd(TWMEraseBkgnd &Msg);
void __fastcall WMActivate(TWMActivate &Msg);
void __fastcall WMSysCommand(TWMSysCommand &Msg);//用以响应和处理Windows消息。//
Graphics::TBitmap *ScreenBitmap;//屏幕保护程式的背景颜色//
7 、在Form2的OnCreate事件中添加如下代码:
void __fastcall TForm2::Form2Create(TObject *Sender)
{
Left = 0;
Top = 0;
Width = Screen->Width;
Height= Screen->Height;// 使窗口的大小为整个屏幕的大小//
Cursor = crNone; file://隐藏屏幕光标//
ScreenBitmap->Width = Width;
ScreenBitmap->Height = Height;
SreenBitmap->Canvas->Brush->Color = clBlack;//配置屏幕背景大小和颜色//
ScreenBitmap->Canvas->FillRect(Rect(0,0,Width,Height));
Timer1->Enabled = true;
Form1->MyReg->OpenKey("Software\\MyCompany\\Remember",true);
Timer1->Interval=Form1->MyReg->ReadInteger("Interval");
x4=10;
x5=20;
x6=30;
}
8、在Form2的OnClose事件中添加如下代码:
void __fastcall TForm2::Form2Close(TObject *Sender)
{
Timer1->Enabled = false;
delete ScreenBitmap;
}
9 、在Form2的OnKeyDown 、OnMouseDown、OnMouseMoves事件中添加如下代码:
void __fastcall TForm2::Form2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
Close( );
MyReg->Fee( );
}
void __fastcall TForm2::Form2MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Close( );
MyReg->Free( );
}
void __fastcall TForm2::Form2MouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
Close( );
MyReg->Free ( );
}//假如发生鼠标移动、键盘按键关闭屏幕保护程式//
10、处理Windows的WM_ERARSEBKGND消息:
void __fastcall TForm2::WMEraseBkgnd(TWMEraseBkgnd &Msg)
{
Msg.Result = false; file://不刷新屏幕背景//
}
11、处理Windows的WM_ACTIVE消息:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash