//--------------------------------------------------------------------------- #include #include "SaveFormUnit.h" #pragma hdrstop #include "GlobalUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "PNGButton" #pragma resource "*.dfm" TSaveForm *SaveForm; //--------------------------------------------------------------------------- __fastcall TSaveForm::TSaveForm(TComponent* Owner, String strDefaultFile, int iLastOption, int iLastType) : TForm(Owner) { m_editFileName->Text = strDefaultFile; m_imgComposeCheck->Tag = (bool)(iLastOption & 2); m_imgSongCheck->Tag = (bool)(iLastOption & 1); if( g_bPredefine && m_imgComposeCheck->Tag==0 && m_imgSongCheck->Tag==1 ){ m_imgSongCheck->Tag = 0; } m_iSaveType = iLastType; SetTransparent( this ); } //--------------------------------------------------------------------------- void __fastcall TSaveForm::WMNCHitTest(TWMNCHitTest &Msg) { TForm::Dispatch(&Msg); if( Msg.Result==HTCLIENT && Msg.YPosText).CompareIC(".mid")==0 ){ return; } TImage* pImg = (TImage*)Sender; if( !g_bPredefine || pImg==m_imgComposeCheck || m_imgComposeCheck->Tag==1 ){ pImg->Tag = !pImg->Tag; pImg->Picture->Bitmap->Assign(m_pImgCheckState[pImg->Tag]); pImg->Invalidate(); } if( g_bPredefine && pImg==m_imgComposeCheck && pImg->Tag==0 && m_imgSongCheck->Tag==1 ){ m_imgSongCheck->Tag = 0; m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[0]); m_imgSongCheck->Invalidate(); } if( ( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 || ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ) && ( m_imgComposeCheck->Tag==1 || m_imgSongCheck->Tag==1 ) ){ m_btnOk->Enabled = true; } else{ m_btnOk->Enabled = false; } } //--------------------------------------------------------------------------- void __fastcall TSaveForm::FormCreate(TObject *Sender) { m_lblCaption->Font->Color = RGB(60,43,23); m_pImgCheckState[0] = new TBitmap(); m_pImgCheckState[0]->LoadFromResourceName(int(HInstance), L"BmpUnchecked"); m_pImgCheckState[1] = new TBitmap(); m_pImgCheckState[1]->LoadFromResourceName(int(HInstance), L"BmpChecked"); //绘制圆角窗体 HRGN hRgn = CreateRoundRectRgn( 0, 0, Width+1, Height+1, 16, 16 ); SetWindowRgn( Handle, hRgn, false ); DeleteObject( hRgn ); } //--------------------------------------------------------------------------- void __fastcall TSaveForm::FormDestroy(TObject *Sender) { for( int i=0; i<2; i++ ){ if( m_pImgCheckState[i] ) delete m_pImgCheckState[i]; } } //--------------------------------------------------------------------------- void __fastcall TSaveForm::BtnBrowseClick(TObject *Sender) { TSaveDialog * pDlg = new TSaveDialog(NULL); pDlg->Options << ofCreatePrompt << ofOverwritePrompt; pDlg->Title = L"保存为"; pDlg->FileName = ExtractFileName( m_editFileName->Text ); pDlg->InitialDir = ExtractFilePath( m_editFileName->Text ); #ifdef _PROFESSIONAL pDlg->Filter = "mp3文件 (*.mp3)|*.MP3|Wave文件 (*.wav)|*.WAV|midi文件 (*.mid)|*.MID"; #else pDlg->Filter = "mp3文件 (*.mp3)|*.MP3|Wave文件 (*.wav)|*.WAV"; #endif if( ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ){ m_iSaveType = FILETYPE_MP3; } else if( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ){ m_iSaveType = FILETYPE_WAVE; } else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){ #ifdef _PROFESSIONAL m_iSaveType = FILETYPE_MIDI; #else m_iSaveType = FILETYPE_MP3; #endif } pDlg->FilterIndex = m_iSaveType + 1; String strType; if( m_iSaveType==FILETYPE_WAVE ){ strType = "wav"; } else if( m_iSaveType==FILETYPE_MP3 ){ strType = "mp3"; } else if( m_iSaveType==FILETYPE_MIDI ){ strType = "mid"; } pDlg->DefaultExt = strType; if( pDlg->Execute(Handle) ){ m_editFileName->Text = pDlg->FileName; #ifdef _PROFESSIONAL if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){ if( m_imgComposeCheck->Tag!=1 ){ m_imgComposeCheck->Tag = 1; m_imgComposeCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgComposeCheck->Tag]); m_imgComposeCheck->Invalidate(); } if( m_imgSongCheck->Tag != 0 ){ m_imgSongCheck->Tag = 0; m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgSongCheck->Tag]); m_imgSongCheck->Invalidate(); } m_btnOk->Enabled = true; } #endif } delete pDlg; } //--------------------------------------------------------------------------- void __fastcall TSaveForm::FileNameChange(TObject *Sender) { if( ( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 || ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ) && ( m_imgComposeCheck->Tag==1 || m_imgSongCheck->Tag==1 ) ){ m_btnOk->Enabled = true; } #ifdef _PROFESSIONAL else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 && m_imgComposeCheck->Tag==1 && m_imgSongCheck->Tag==0 ){ m_btnOk->Enabled = true; } #endif else{ m_btnOk->Enabled = false; } } //--------------------------------------------------------------------------- void __fastcall TSaveForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { switch( Key ){ case VK_RETURN: if( m_btnOk->Enabled ) ModalResult = mrOk; break; case VK_ESCAPE: ModalResult = mrCancel; break; } } //--------------------------------------------------------------------------- void __fastcall TSaveForm::FormActivate(TObject *Sender) { if( ExtractFileExt(m_editFileName->Text).CompareIC(".mp3")==0 ){ m_iSaveType = FILETYPE_MP3; } else if( ExtractFileExt(m_editFileName->Text).CompareIC(".wav")==0 ){ m_iSaveType = FILETYPE_WAVE; } #ifdef _PROFESSIONAL else if( ExtractFileExt(m_editFileName->Text).CompareIC(".mid")==0 ){ m_iSaveType = FILETYPE_MIDI; } if( m_iSaveType==FILETYPE_MIDI ){ m_imgComposeCheck->Tag = 1; m_imgSongCheck->Tag = 0; } #endif m_imgComposeCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgComposeCheck->Tag]); m_imgSongCheck->Picture->Bitmap->Assign(m_pImgCheckState[m_imgSongCheck->Tag]); FileNameChange( NULL ); } //---------------------------------------------------------------------------