www.pudn.com > C++Builder6.0To-screensave.rar > setting.cpp


//--------------------------------------------------------------------------- 
#include  
#pragma hdrstop 
 
#include "setting.h" 
#include "screen.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TSettingForm *SettingForm; 
//--------------------------------------------------------------------------- 
__fastcall TSettingForm::TSettingForm(TComponent* Owner) 
     : TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::RadioButton1Click(TObject *Sender) 
{ 
     CheckListBox1->Enabled=RadioButton2->Checked; 
     TrackBar1->Enabled=!RadioButton2->Checked; 
     PreviewBitBtn->Enabled=false; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::RadioButton2Click(TObject *Sender) 
{ 
     CheckListBox1->Enabled=RadioButton2->Checked; 
     PreviewBitBtn->Enabled=false; 
     TrackBar1->Enabled=!RadioButton2->Checked; 
     for(int i=0;i<16;i++) 
        CheckListBox1->Checked[i]=true; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::FormCreate(TObject *Sender) 
{ 
     Reg= new TRegistry(); 
     AnsiString Path=ExtractFilePath(Application->ExeName); 
     try 
     { 
     ListBox1->Items->LoadFromFile(Path+"PicList"); 
     ListBox2->Items->LoadFromFile(Path+"SndList"); 
     } 
     catch(...){} 
 
     Reg->RootKey=HKEY_CURRENT_USER; 
     Reg->OpenKey("\\Software\\ScreenSaverDIY\\", 
          true); 
     if (!Reg->ValueExists("Mode"))     //不存在则赋默认初值 
     { 
          Reg->WriteInteger("Mode",1); 
          Reg->WriteInteger("Speed",3); 
          RadioButton1->Checked=true; 
          for (int i=0;i<16;i++) 
               Reg->WriteBool("Effect"+IntToStr(i),true); 
     } 
     else   //存在则读取 
     { 
          if(Reg->ReadInteger("Mode")==0) 
          { 
               RadioButton1->Checked=true; 
               TrackBar1->Position=Reg->ReadInteger("Speed"); 
          } 
          else RadioButton2->Checked=true; 
          for (int i=0;i<16;i++) 
               CheckListBox1->Checked[i]= 
               Reg->ReadBool("Effect"+IntToStr(i)); 
     } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::FormDestroy(TObject *Sender) 
{ 
     delete Reg;       
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::ExitBitBtnClick(TObject *Sender) 
{ 
     Close(); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::PicAddBitBtnClick(TObject *Sender) 
{ 
     OpenDialog1->Filter = GraphicFilter(__classid(TGraphic)); 
     if (OpenDialog1->Execute()){ 
          if (FileExists(OpenDialog1->FileName)) 
               ListBox1->Items->Add(OpenDialog1->FileName); 
          else MessageBox(Handle,"文件不存在!","错误",MB_OK); 
     } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::PicDelBitBtnClick(TObject *Sender) 
{ 
    ListBox1->Items->Delete(ListBox1->ItemIndex);     
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::MusicAddBitBtnClick(TObject *Sender) 
{ 
     OpenDialog1->Filter = "All Music Files(*.mdi;*.wav)|*.mid;*.wav|MIDI Files(*.mdi)|*.mid|Wave Files(*.wav)|*.wav"; 
     if (OpenDialog1->Execute()){ 
 
          if (FileExists(OpenDialog1->FileName)) 
               ListBox2->Items->Add(OpenDialog1->FileName); 
          else MessageBox(Handle,"文件不存在!","错误",MB_OK); 
     } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::MusicDelBitBtnClick(TObject *Sender) 
{ 
    ListBox2->Items->Delete(ListBox2->ItemIndex);     
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::SaverSelCheckBoxClick(TObject *Sender) 
{ 
    PasswordCheckBox->Enabled=SaverSelCheckBox->Checked; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::ReNameCheckBoxClick(TObject *Sender) 
{ 
    NameEdit->Enabled=ReNameCheckBox->Checked; 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TSettingForm::PreviewBitBtnClick(TObject *Sender) 
{ 
    TScreenForm *ScreenForm=new TScreenForm(NULL); 
    if (ScreenForm->ShowModal()) delete ScreenForm; 
} 
//--------------------------------------------------------------------------- 
void __fastcall TSettingForm::ApplyBitBtnClick(TObject *Sender) 
{ 
     if( MessageDlg("确定应用您所做的设置么?",mtConfirmation,TMsgDlgButtons()<ExeName); 
     if (ListBox1->Count)  ListBox1->Items->SaveToFile(Path+"PicList"); 
     else 
     { 
        ShowMessage("您没有加入图片,请先加入图片!"); 
        return; 
     } 
     ListBox2->Items->SaveToFile(Path+"SndList"); 
     //保存设置变量 
     if (RadioButton1->Checked) 
     { 
          Reg->WriteInteger("Mode",0); 
          Reg->WriteInteger("Speed",TrackBar1->Position); 
     } 
     else  Reg->WriteInteger("Mode",1); 
     for (int i=0;i<16;i++) 
        Reg->WriteBool("Effect"+IntToStr(i),CheckListBox1->Checked[i]); 
 
     if (SaverSelCheckBox->Checked)  //设为当前屏保 
     { 
         TRegistry *Reg1= new TRegistry(); 
         Reg1->RootKey=HKEY_CURRENT_USER; 
         Reg1->OpenKey("\\Control Panel\\Desktop",true); 
         Reg1->WriteString("ScreenSaveActive","1"); 
         //获取系统目录 
         char *buffer; 
         AnsiString srcfile,destfile; 
         unsigned int size; 
         buffer=new char[255]; 
         size=256; 
         GetSystemDirectory(buffer,size); 
         //复制文件 
         srcfile=Path+"ScreenSaverDIY.SCR"; 
         destfile=AnsiString(buffer)+"\\"+NameEdit->Text+".SCR"; 
         if (FileExists(AnsiString(buffer)+"\\ScreenSaverDIY.SCR")) 
            DeleteFile( (AnsiString(buffer)+"\\ScreenSaverDIY.SCR").c_str() ); 
         CopyFile(srcfile.c_str(),destfile.c_str(),0); 
         srcfile=Path+"PicList"; 
         destfile=AnsiString(buffer)+"\\"+"PicList"; 
         CopyFile(srcfile.c_str(),destfile.c_str(),0); 
         srcfile=Path+"SndList"; 
         destfile=AnsiString(buffer)+"\\"+"SndList"; 
         CopyFile(srcfile.c_str(),destfile.c_str(),0); 
         //修改注册表 
         if (!ReNameCheckBox->Checked) 
            destfile=AnsiString(buffer)+"\\Screen~1.SCR"; 
         else 
         { 
            if (NameEdit->Text.Length()<=6) 
                destfile="\\"+NameEdit->Text+".SCR"; 
            else 
                destfile="\\"+NameEdit->Text.SubString(1,6)+"~1.SCR"; 
         } 
         Reg1->WriteString("SCRNSAVE.EXE",destfile); 
         if (PasswordCheckBox->Checked) //设置密码 
                Reg1->WriteString("ScreenSaverIsSecure","1"); 
         else   Reg1->WriteString("ScreenSaverIsSecure","0"); 
 
         delete Reg1; 
     } 
     PreviewBitBtn->Enabled=true; 
} 
//---------------------------------------------------------------------------