#include #include #include #include char GainEditor::szClassName[]={"GainControl"}; int GainEditor::smUseCount=0; GainEditor::GainEditor(AudioEffect *effect) : AEffEditor(effect), mWheelController(::GetModuleHandle("GainEdit")) { mResBitmap=::new ResBitmap("MAIN",::GetModuleHandle("GainEdit")); mResBitmap.disposition(PointerDisposition::Delete); mRect.left=0; mRect.top=0; mRect.right=mResBitmap->width()-1; mRect.bottom=mResBitmap->height()-1; mPaintHandler.setCallback(this,&GainEditor::paintHandler); mCreateHandler.setCallback(this,&GainEditor::createHandler); mGainWindow.insertHandler(VectorHandler::PaintHandler,&mPaintHandler); mGainWindow.insertHandler(VectorHandler::CreateHandler,&mCreateHandler); effect->setEditor(this); } GainEditor::~GainEditor() { mGainWindow.removeHandler(VectorHandler::PaintHandler,&mPaintHandler); mGainWindow.removeHandler(VectorHandler::CreateHandler,&mCreateHandler); mGainWindow.destroy(); } long GainEditor::getRect(ERect **eRect) { *eRect=&mRect; return true; } long GainEditor::open(void *ptr) { smUseCount++; mpSystemWindow=(HWND)ptr; registerClass(); createWindow(); return true; } void GainEditor::close() { mGainWindow.destroy(); smUseCount--; if(0==smUseCount)::UnregisterClass(szClassName,mGainWindow.processInstance()); } void GainEditor::idle() { AEffEditor::idle(); } void GainEditor::update(void) { //SendMessage (delayFader, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) effect->getParameter (kDelay) //SendMessage (feedbackFader, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) effect->getParameter(kFeedBack)); //SendMessage (volumeFader, TBM_SETPOS, (WPARAM) TRUE, (LPARAM) effect->getParameter (kOut)); } void GainEditor::setValue(void* fader, int value) { message("setValue"); //if (fader == delayFader) //effect->setParameterAutomated (kDelay, (float)value / 100.f); //else if (fader == feedbackFader) //effect->setParameterAutomated (kFeedBack, (float)value / 100.f); //else if (fader == volumeFader) //effect->setParameterAutomated (kOut, (float)value / 100.f); } void GainEditor::registerClass() { WNDCLASS wndClass; if(::GetClassInfo(mGainWindow.processInstance(),szClassName,(WNDCLASS FAR*)&wndClass))return; wndClass.style =CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_OWNDC; wndClass.lpfnWndProc =(WNDPROC)GUIWindow::WndProc; wndClass.cbClsExtra =0; wndClass.cbWndExtra =sizeof(GainEditor*); wndClass.hInstance =mGainWindow.processInstance(); wndClass.hIcon =0; wndClass.hCursor =0; wndClass.hbrBackground =(HBRUSH)::GetSysColorBrush(COLOR_BTNFACE); wndClass.lpszMenuName =0; wndClass.lpszClassName =szClassName; ::RegisterClass(&wndClass); } void GainEditor::createWindow() { mGainWindow.createWindow(0,szClassName,"Window",WS_CHILD|WS_VISIBLE,Rect(0,0,mResBitmap->width(),mResBitmap->height()),mpSystemWindow,0,mGainWindow.processInstance(),&mGainWindow); mGainWindow.show(SW_SHOW); mGainWindow.update(); } CallbackData::ReturnType GainEditor::createHandler(CallbackData &someCallbackData) { PureDevice pureDevice(mGainWindow); mDIBitmap=::new DIB24(); mDIBitmap.disposition(PointerDisposition::Delete); mDIBitmap->create(mResBitmap->width(),mResBitmap->height(),pureDevice); mDIBitmap->copyBits(*mResBitmap); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType GainEditor::paintHandler(CallbackData &someCallbackData) { PureDevice pureDevice(mGainWindow); // mResBitmap->getPalette().usePalette(pureDevice,true); mDIBitmap->bitBlt(pureDevice,Rect(0,0,mGainWindow.width(),mGainWindow.height()),Point()); mWheelController.drawImage(pureDevice,Point(0,0),0); // mResBitmap->getPalette().usePalette(pureDevice,false); return (CallbackData::ReturnType)FALSE; } void GainEditor::message(String message) { ::MessageBox(0,"GainEditor",message.str(),MB_OK); } // ****************************************************************************************************************** GainEdit::GainEdit(AudioMasterCallback audioMaster) : Gain(audioMaster) { setUniqueID('GNed'); editor=new GainEditor(this); // if(!editor)oome=true; } GainEdit::~GainEdit() { }