//--------------------------------------------------------------------------- #ifndef ComposeFormUnitH #define ComposeFormUnitH //--------------------------------------------------------------------------- #include #include #include #include #include #include #include #include "PNGButton.hpp" #include "ComposePanelUnit.h" #include #include "PopMenuUnit.h" #include "ComposeListBoxUnit.h" #include "SkinHintWindow.h" #include "BackgroundForm.h" //--------------------------------------------------------------------------- class TComposeForm : public TBackgroundForm { __published: // IDE-managed Components // TImage *m_imgBk; // TImage *m_imgBottomSide; // TImage *m_imgLeftBottomConner; // TImage *m_imgRightSide; // TImage *m_imgRightBottomConner; TImage *m_imgBreakH; TImage *m_imgBreakI; TImage *m_imgBreakR; TPNGButton *m_btnNextStep; TPNGButton *m_btnPrevStep; TPNGButton *m_btnRecord; TPNGButton *m_btnStop; TPNGButton *m_btnPlay; TPNGButton *m_btnPause; ComposePanelUnit::TPanel *m_panelBarsShow; TPNGButton *m_btnVolAudioSet; Vcl::Extctrls::TPanel *m_panelAudioVolSet; TImage *m_imgAudioVolSet; TPNGButton *m_btnAudioVolPos; TPNGButton *m_btnVolMusicSet; Vcl::Extctrls::TPanel *m_panelMusicVolSet; TImage *m_imgMusicVolSet; TPNGButton *m_btnMusicVolPos; TPNGButton *m_btnStyleChange; Vcl::Extctrls::TPanel *m_panelStyleName; TImage *m_imgStyleNameBk; Vcl::Extctrls::TPanel *m_panelMusicInfo; TImage *m_imgMusicInfoBk; TLabel *m_lblPlayTime; TLabel *m_lblBeat; TLabel *m_lblTempo; TLabel *m_lblKey; TLabel *m_lblDiao; TLabel *m_lblStyleName; ComposeListBoxUnit::TListBox *m_lbResource; ComposeListBoxUnit::TListBox *m_lbCompose; TImage *m_imgResourceHead; TImage *m_imgComposeHead; TImage *m_imgComposeTool; Vcl::Extctrls::TPanel *m_panelResource; Vcl::Extctrls::TPanel *m_panelCompose; TPNGButton *m_btnAdd; TPNGButton *m_btnMoveUp; TPNGButton *m_btnMoveDown; TPNGButton *m_btnComposeMin; TPNGButton *m_btnResourceMin; TPNGButton *m_btnResourceClose; TPNGButton *m_btnComposeClose; TPNGButton *m_btnComposeMax; TPNGButton *m_btnResourceMax; Vcl::Extctrls::TPanel *m_panelComposeBottom; Vcl::Extctrls::TPanel *m_panelListIcon; TImage *m_imgResourceIcon; TImage *m_imgComposeIcon; TPNGButton *m_btnResourceOpen; TPNGButton *m_btnComposeOpen; TImage *m_imgDelete; TPNGButton *m_btnAudioEffect; TPNGButton *m_btnMicSet; void __fastcall FormCreate(TObject *Sender); void __fastcall FormDestroy(TObject *Sender); void __fastcall FormResize(TObject *Sender); void __fastcall FormActivate(TObject *Sender); void __fastcall StepClick(TObject *Sender); void __fastcall PlayClick(TObject *Sender); void __fastcall StopClick(TObject *Sender); void __fastcall PauseClick(TObject *Sender); void __fastcall PlayTimeClick(TObject *Sender); void __fastcall BtnVolSetClick(TObject *Sender); void __fastcall ImgVolSetMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall BtnVolPosMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall BtnVolPosMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); void __fastcall BtnVolPosMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall BarsShowMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall ListBoxMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall StageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); void __fastcall StageMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); // void __fastcall LBFontSelectMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); void __fastcall StageMouseLeave(TObject *Sender); void __fastcall BtnListMinClick(TObject *Sender); void __fastcall BtnListMaxClick(TObject *Sender); void __fastcall BtnListCloseClick(TObject *Sender); void __fastcall BtnListShowClick(TObject *Sender); void __fastcall BtnAddClick(TObject *Sender); void __fastcall BtnMoveClick(TObject *Sender); void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); void __fastcall BtnStyleChangeClick(TObject *Sender); // void __fastcall BtnFontChangeClick(TObject *Sender); void __fastcall FormDeactivate(TObject *Sender); void __fastcall AudioEffectClick(TObject *Sender); void __fastcall MicSetClick(TObject *Sender); private: // User declarations //音量相关 int m_nAudioVolPos, m_nMusicVolPos, m_yPosDragBegin; bool m_bPosDraging; //播放/显示相关 int m_iStartBar, m_iLastStartBar, m_nTotalBarNum; double m_dblStartPoint, m_dblLastStartPoint; UINT m_tTimer, m_tAccuracy, m_tMusicLen; //编曲相关 int m_iLastStyleID; //菜单操作相关 TPopMenu * m_pPopMenu; int m_iPopBar, m_iPopPoint; //拖动操作相关 TImage *m_imgDrag; bool m_bDraging; int m_iDragingIndex, m_xImgDrag, m_yImgDrag; //透明图片相对于鼠标的位置 TBitmap *m_bmpDeleteNormal, *m_bmpDeleteHover; //信息显示相关 int m_iHintStage; TSkinHintWindow *m_pStageInfoWnd; TTimer *m_pTimerHint; TObject *m_pHintObject; //列表位置相关 int m_iResListTop, m_nResListHeight, m_iComListTop, m_nComListHeight; // void AutoCompose(); void InitResourceList(); void ResetComposeList(); void CalcListSize(); void CheckOperationState(); void DrawDragImg( TObject* Sender, int iSelIndex ); void AddStage( int iMelodyStage ); void DeleteStage( int iComposeStage ); // bool Compose(bool bCombineSong); void ShowPlayTime(); void SetFocusStage( int iSelIndex ); void BarsLButtonDown( int iHitType, int iHitBar, int iHitPoint, int X, int Y ); void BarsRButtonDown( int iHitType, int iHitBar, int iHitPoint, int X, int Y ); void __fastcall HintTimerProc(TObject* Sender); void __fastcall OnSelectStageVar( TObject* Sender ); void __fastcall OnSelectBarFill( TObject* Sender ); void __fastcall OnAddStage( TObject* Sender ); void __fastcall OnDeleteStage( TObject* Sender ); void __fastcall OnSetStageStyle( TObject* Sender ); MESSAGE void __fastcall UMMediaTime(TMessage &Message); // MESSAGE void __fastcall UMEnableReload(TMessage &Message); MESSAGE void __fastcall UMSelectStyle(TMessage &msg); MESSAGE void __fastcall UMReload(TMessage &msg); MESSAGE void __fastcall UMSetFontPosition(TMessage &msg); MESSAGE void __fastcall UMHidePopControl(TMessage &msg); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(MSG_MEDIATIME, TMessage, UMMediaTime) // MESSAGE_HANDLER(UM_ENABLERELOAD, TMessage, UMEnableReload) MESSAGE_HANDLER(UM_SELECTSTYLE, TMessage, UMSelectStyle) MESSAGE_HANDLER(UM_RELOAD, TMessage, UMReload) MESSAGE_HANDLER(UM_SETFONTPOSITION, TMessage, UMSetFontPosition) MESSAGE_HANDLER(UM_HIDEPOPCONTROL, TMessage, UMHidePopControl) MESSAGE_HANDLER(WM_ERASEBKGND, TWMEraseBkgnd, WMEraseBkgnd) END_MESSAGE_MAP(TForm) public: // User declarations __fastcall TComposeForm(TComponent* Owner); void __fastcall ChangeChordMode( bool bAlpha ); }; //--------------------------------------------------------------------------- extern PACKAGE TComposeForm *ComposeForm; //--------------------------------------------------------------------------- #endif