Unitcontrol.cpp
上传用户:cqslgg
上传日期:2009-12-10
资源大小:128k
文件大小:11k
源码类别:
Delphi/CppBuilder
开发平台:
C++ Builder
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include <stdlib.h>
- #include <Registry.hpp>
- #include <jpeg.hpp>
- #include "Unitcontrol.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TMainForm *MainForm;
- //---------------------------------------------------------------------------
- __fastcall TMainForm::TMainForm(TComponent* Owner)
- : TForm(Owner)
- {
- bussy=false;
- stoploop=false;
- stopcls=false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::Fade(Graphics::TBitmap *Pic,TCanvas *dest)
- {
- int style,x,y,devide;
- int picwidth=Pic->Width ;
- int picheight=Pic->Height ;
- TRect rect1,rect2;
- const block=10;
- devide=picheight/block;
- randomize();
- style=random(5);
- x=random(this->ClientWidth-Pic->Width);
- y=random(this->ClientHeight-Pic->Height);
- Timer1->Enabled=false;
- switch (style)
- {
- case 0:
- for(int i=0;i<devide;i++)
- {if(!stoploop){
- rect1=Rect(0,i*block,picwidth,block*(i+1));
- rect2=Rect(x,y+block*i,picwidth+x,y+block*(i+1));
- dest->CopyRect(rect2,Pic->Canvas,rect1);
- Application->ProcessMessages();
- Sleep(100);}
- else
- break;
- }
- break;
- case 1:
- for(int i=devide;i>=0;i--)
- {
- if(!stoploop){
- rect1=Rect(0,i*block,picwidth,block*(i+1));
- rect2=Rect(x,y+block*i,picwidth+x,y+block*(i+1));
- dest->CopyRect(rect2,Pic->Canvas,rect1);
- Application->ProcessMessages();
- Sleep(100); }
- else
- break;
- }
- break;
- case 2:
- for(int i=x;i>=0;i--)
- {if(!stoploop){
- dest->Draw(i,y,Pic);
- y--;
- Application->ProcessMessages();
- Sleep(10);}
- else
- break;
- }
- break;
- case 3:
- for(int i=picwidth/block-1;i>=0;i--)
- {if(!stoploop){
- rect1=Rect(i*block,0,(i+1)*block,picheight);
- rect2=Rect(x+i*block,y,x+(i+1)*block,picheight);
- dest->CopyRect(rect2,Pic->Canvas,rect1);
- Application->ProcessMessages();
- Sleep(100);}
- else
- break;
- }
- break;
- default:
- {dest->Draw(x,y,Pic) ;
- Sleep(100);}
- }
- Timer1->Enabled=true;
- }
- void __fastcall TMainForm::Timer1Timer(TObject *Sender)
- {
- stoploop=false;
- if(picdir=="no"){
- Graphics::TBitmap *srcimg;
- srcimg=new Graphics::TBitmap();
- randomize();
- try
- {
- srcimg->LoadFromResourceID((int)HInstance,random(7));
- this->Fade(srcimg,this->Canvas);
- this->clsscreen(Image1);
- }
- catch(...)
- {
- srcimg->Free();
- Timer1->Enabled=true;
- }
- this->Canvas->FillRect(Rect(0,0,this->ClientWidth,this->ClientHeight));
- }
- else
- {int s=0;
- s=random(File1->Items->Count);
- try
- {
- if(this->Height>Image1->Height&&this->Width>Image1->Width)
- {Image1->Top=rand()%(this->Height-Image1->Height);
- Image1->Left=rand()%(this->Width-Image1->Width);}
- else
- {
- Image1->Top =0;
- Image1->Left=0;
- }
- Image1->Picture->LoadFromFile(File1->Items->Strings[s]);
- this->clsscreen(Image1);
- /* Image1->Canvas->Brush->Color=clBlack;
- for(int i=0;i<100;i++){
- if(!stoploop){
- Image1->Canvas->Ellipse(random(Image1->ClientWidth),random(Image1->ClientHeight) , random(Image1->Width/10), random(Image1->ClientHeight/10));
- Application->ProcessMessages();
- Sleep(100);
- }*/
- }
- catch(...)
- {
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::FormCreate(TObject *Sender)
- {
- SetWindowPos(this->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
- //Make the form exactly cover the screen
- this->Width=Screen->Width;
- this->Height=Screen->Height;
- this->Top=0;
- this->Left=0;
- this->Canvas->Brush->Color=clBlack;
- stoploop=false;
- Version=GetVersion();
- TRegistry *Registry = new TRegistry;
- try
- {
- if(Version>0x80000000){
- Registry->RootKey =HKEY_CURRENT_USER;
- Registry->OpenKey("\Control Panel\Desktop",false);
- PWProtect=Registry->ReadInteger("ScreenSaveUsePassword");
- Registry->CloseKey();}
- Registry->RootKey =HKEY_CURRENT_USER;
- if(Registry->OpenKey("\Software\CODEHUNTER", false)){
- picdir=Registry->ReadString("PicDir");
- frequence=Registry->ReadInteger("frequence");}
- else
- {
- Registry->CreateKey("\Software\CODEHUNTER");
- Registry->WriteString("PicDir","no");
- Registry->WriteInteger("frequence",3);
- picdir="no";
- }
- if(frequence<=0||frequence>6)
- frequence=3;
- if(picdir!="no"){File1->Directory=picdir;
- Timer1->Interval=800*frequence;}
- else
- Timer1->Interval=200*frequence;
- }
- __finally
- {
- delete Registry;
- }
- //Find out if we are running under NT
- if(Version!=0)
- //Disable Ctrl-Alt-Del if appropriate. NT handles password-protected
- //screen savers at the system level, so this is only needed for non-NT
- //situations with password protection enabled.
- if(PWProtect&&Version>0x80000000)
- SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
- //Copy a clone of the desktop onto the form, to
- //serve as a background for the circle painting
- //CopyScreen Me
- //Make the cursor disappear
- while (!ShowCursor(false)< -5);
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::FormKeyDown(TObject *Sender, WORD &Key,
- TShiftState Shift)
- {
- Close();
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::FormMouseDown(TObject *Sender,
- TMouseButton Button, TShiftState Shift, int X, int Y)
- {
- Close();
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
- {
- stoploop=true;
- stopcls=true;
- Timer1->Enabled =false;
- if (PWProtect && Version>0x80000000)
- {
- bool PassChck;
- //We need a cursor so that the user can move around
- //the password form
- while(!ShowCursor(True) > 5);
- typedef UINT(CALLBACK *FUN)(HWND);
- HINSTANCE hDll=LoadLibrary("password.cpl");
- FUN myfun;
- if(hDll!=NULL)
- {
- myfun=(FUN)GetProcAddress(hDll,"VerifyScreenSavePwd");
- if(!myfun)FreeLibrary(hDll);
- else
- PassChck=myfun(this->Handle);
- }
- if(PassChck == false)
- {
- Timer1->Enabled =true;
- //Make the cursor disappear again
- while(!ShowCursor(False) < -5);
- CanClose = false;
- //stoploop=false;
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
- {
- while(!ShowCursor(True) > 5);
- //re-enable Ctrl-Alt-Del if disabled
- if(PWProtect&&Version>0x80000000)
- SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::FormMouseMove(TObject *Sender,
- TShiftState Shift, int X, int Y)
- {
- static int MouseMoves=0;
- MouseMoves = MouseMoves + 1;
- if(MouseMoves >4)
- {
- this->Close();
- MouseMoves = 0 ;
- }
- }
- //---------------------------------------------------------------------------
- void TMainForm::clsscreen(TImage * image)
- {
- int style;
- randomize();
- style=random(5);
- TColor color;
- Timer1->Enabled=false;
- if(bussy==false)
- {
- stopcls=false;
- switch (style)
- {
- case 1:
- bussy=true;
- color=(TColor)RGB(rand()%256,rand()%256,rand()%256);
- image->Canvas->Pen->Color=color;
- image->Canvas->Brush->Color=color;
- for(int i=0;i<=image->ClientWidth/2;i++)
- {
- if(stopcls) break;
- Application->ProcessMessages();
- image->Canvas->MoveTo(i,0);
- image->Canvas->LineTo(i,image->ClientHeight);
- image->Canvas->MoveTo(image->ClientWidth-i,0);
- image->Canvas->LineTo(image->ClientWidth-i,image->ClientHeight);
- }
- break;
- case 2: //从中间到左右两边清屏
- bussy=true;
- color=(TColor)RGB(rand()%256,rand()%256,rand()%256);
- image->Canvas->Pen->Color=color;
- image->Canvas->Brush->Color=color;
- for(int i=image->ClientWidth/2;i>=0;i--)
- {
- if(stopcls) break;
- Application->ProcessMessages();
- image->Canvas->MoveTo(i,0);
- image->Canvas->LineTo(i,image->ClientHeight);
- image->Canvas->MoveTo(image->ClientWidth-i,0);
- image->Canvas->LineTo(image->ClientWidth-i,image->ClientHeight);
- }
- break;
- case 3: //从上(顶)下(低)到中间清屏
- bussy=true;
- color=(TColor)RGB(rand()%256,rand()%256,rand()%256);
- image->Canvas->Pen->Color=color;
- image->Canvas->Brush->Color=color;
- for(int i=0;i<=image->ClientHeight/2;i++)
- {
- if(stopcls) break;
- Application->ProcessMessages();
- image->Canvas->MoveTo(0,i);
- image->Canvas->LineTo(image->ClientWidth,i);
- image->Canvas->MoveTo(0,image->ClientHeight-i);
- image->Canvas->LineTo(image->ClientWidth,image->ClientHeight-i);
- }
- break;
- case 4: //从上(顶)下(低)到中间清屏
- bussy=true;
- color=(TColor)RGB(rand()%256,rand()%256,rand()%256);
- image->Canvas->Pen->Color=color;
- image->Canvas->Brush->Color=color;
- for(int i=image->ClientHeight/2;i>=0;i++)
- {
- if(stopcls) break;
- Application->ProcessMessages();
- image->Canvas->MoveTo(0,i);
- image->Canvas->LineTo(image->ClientWidth,i);
- image->Canvas->MoveTo(0,image->ClientHeight-i);
- image->Canvas->LineTo(image->ClientWidth,image->ClientHeight-i);
- }
- break;
- default: //菱形清屏,从四角向中心
- bussy=true;
- color=(TColor)RGB(rand()%256,rand()%256,rand()%256);
- image->Canvas->Pen->Color=color;
- image->Canvas->Brush->Color=color;
- for(int i=0 ;i<image->ClientWidth;i+=30)
- {
- if(stopcls) break;
- for(int j=0;j<=image->ClientHeight;j+=30*image->ClientHeight/image->ClientWidth)
- {
- if(stopcls) break;
- Application->ProcessMessages();
- image->Canvas->MoveTo(i,0);
- image->Canvas->LineTo(0,j);
- image->Canvas->MoveTo(image->ClientWidth-i,image->ClientHeight);
- image->Canvas->LineTo(image->ClientWidth,image->ClientHeight-j);
- image->Canvas->MoveTo(0,image->ClientHeight-j);
- image->Canvas->LineTo(i,image->ClientHeight);
- image->Canvas->MoveTo(image->ClientWidth-i,0);
- image->Canvas->LineTo(image->ClientWidth,image->ClientHeight-j);
- }
- }
- }
- }
- bussy=false;
- Timer1->Enabled =true;
- }
- void __fastcall TMainForm::Image1MouseMove(TObject *Sender,
- TShiftState Shift, int X, int Y)
- {
- static int MouseMoves=0;
- MouseMoves = MouseMoves + 1;
- if(MouseMoves >4)
- {
- this->Close();
- MouseMoves = 0 ;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TMainForm::Image1MouseDown(TObject *Sender,
- TMouseButton Button, TShiftState Shift, int X, int Y)
- {
- Close();
- }
- //---------------------------------------------------------------------------