//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "UpgradeThread.h" #include "UpgradeUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TUpgradeForm *UpgradeForm; //--------------------------------------------------------------------------- __fastcall TUpgradeForm::TUpgradeForm(TComponent* Owner) : TForm(Owner) { m_pThread = NULL; } //--------------------------------------------------------------------------- void __fastcall TUpgradeForm::CreateParams(TCreateParams &Params) { TForm::CreateParams(Params); // wcscpy(Params.WinClassName.data, (LPCTSTR)APPNAME); wcscpy(Params.WinClassName, (LPCTSTR)APPNAME); } // --------------------------------------------------------------------------- void __fastcall TUpgradeForm::FormDestroy(TObject *Sender) { if( m_pThread ){ ((TUpgradeThread*)m_pThread)->Cancel(); m_pThread->WaitFor(); delete m_pThread; m_pThread = NULL; } } //--------------------------------------------------------------------------- void __fastcall TUpgradeForm::FormCloseQuery(TObject *Sender, bool &CanClose) { if( m_pThread ){ String msg = m_iMode==1 ? L"正在处理中,确认退出程序?" : L"正在升级中,是否确定中止?"; int mrRet = MessageBox(Handle, msg.c_str(), L"退出", MB_ICONQUESTION | MB_YESNO);; if( mrRet==mrNo ) CanClose = false; } } //--------------------------------------------------------------------------- void __fastcall TUpgradeForm::FormShow(TObject *Sender) { Caption = m_iMode==0 ? L"自动升级程序" : L"MD5生成程序"; m_pThread = new TUpgradeThread(true, m_iMode, m_idSoft, m_sVar, Handle ); m_pThread->Start(); } //--------------------------------------------------------------------------- void __fastcall TUpgradeForm::UMShowText(TMessage &msg) { TCHAR* str = (TCHAR*)msg.LParam; if( msg.WParam==0 ) m_lblTxt->Caption = str; else if( msg.WParam==1 ) m_lblFileCount->Caption = str; else m_lblFileName->Caption = str; } //--------------------------------------------------------------------------- void __fastcall TUpgradeForm::UMProgress(TMessage &msg) { if( msg.WParam==0 ){ m_progCount->Position = msg.LParam; m_progCount->Update(); } else{ m_progFile->Position = msg.LParam; m_progFile->Update(); } } //--------------------------------------------------------------------------- void __fastcall TUpgradeForm::UMComplete(TMessage &msg) { if( m_pThread ){ m_pThread->WaitFor(); delete m_pThread; m_pThread = NULL; } if( m_iMode==0 ){ if( msg.WParam!=0 ) ShowMessage( "本次更新未能完成" ); } else if( m_iMode==1 ){ if( msg.WParam==0 ) ShowMessage( "处理完毕" ); else ShowMessage( "异常中止" ); } Close(); } //--------------------------------------------------------------------------- void __fastcall TUpgradeForm::CancelClick(TObject *Sender) { Close(); } //---------------------------------------------------------------------------