#include #include #include MIDIDialog::MIDIDialog(void) { mInitHandler.setCallback(this,&MIDIDialog::initHandler); mCreateHandler.setCallback(this,&MIDIDialog::createHandler); mCloseHandler.setCallback(this,&MIDIDialog::closeHandler); mDestroyHandler.setCallback(this,&MIDIDialog::destroyHandler); mCommandHandler.setCallback(this,&MIDIDialog::commandHandler); insertHandler(VectorHandler::InitDialogHandler,&mInitHandler); insertHandler(VectorHandler::CreateHandler,&mCreateHandler); insertHandler(VectorHandler::CloseHandler,&mCloseHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } MIDIDialog::MIDIDialog(const MIDIDialog &someMIDIDialog) { // private implementation *this=someMIDIDialog; } MIDIDialog::~MIDIDialog() { removeHandler(VectorHandler::InitDialogHandler,&mInitHandler); removeHandler(VectorHandler::CreateHandler,&mCreateHandler); removeHandler(VectorHandler::CloseHandler,&mCloseHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); } MIDIDialog &MIDIDialog::operator=(const MIDIDialog &someMIDIDialog) { // private implementation return *this; } bool MIDIDialog::perform(GUIWindow &parentWindow,const String &strPathMIDIFileName,int &selectedTrack) { bool returnCode; mPathMIDIFileName=strPathMIDIFileName; returnCode=::DialogBoxParam(processInstance(),(LPSTR)"MIDIDIALOG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this); if(returnCode)selectedTrack=mSelectedTrack; return returnCode; } CallbackData::ReturnType MIDIDialog::initHandler(CallbackData &someCallbackData) { MIDIHelper midiHelper; TrackInfos trackInfos; midiHelper.getTrackInfo(mPathMIDIFileName,trackInfos); setTrackInformation(trackInfos); return (CallbackData::ReturnType)false; } CallbackData::ReturnType MIDIDialog::createHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MIDIDialog::closeHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MIDIDialog::destroyHandler(CallbackData &someCallbackData) { return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType MIDIDialog::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDCANCEL : endDialog(false); break; case IDOK : mSelectedTrack=getSelectedTrack(); if(-1==mSelectedTrack)endDialog(false); else endDialog(true); break; } if(BN_CLICKED==someCallbackData.wmCommandCommand())handleClick(someCallbackData); return (CallbackData::ReturnType)FALSE; } void MIDIDialog::setTrackInformation(TrackInfos &trackInfos) { bool isFirst=true; for(int index=0;index=MIDI_TRACK1&&clickedId<=MIDI_TRACK16))return; mSelectedTrack=clickedId-MIDI_TRACK1; for(int btnId=MIDI_TRACK1;btnId<=MIDI_TRACK16;btnId++) { if(btnId!=clickedId)sendMessage(btnId,BM_SETCHECK,0,0L); } } int MIDIDialog::getSelectedTrack(void)const { int selectedTrack=-1; for(int btnId=MIDI_TRACK1;btnId<=MIDI_TRACK16;btnId++) { if(1==sendMessage(btnId,BM_GETCHECK,0,0L)) { selectedTrack=btnId-MIDI_TRACK1; break; } } return selectedTrack; }