#include #include #include #include #include WORD EntryDialog::perform() { WORD resultCode(::DialogBoxParam(processInstance(),(LPSTR)"SETTINGS",mhParent,(DLGPROC)DWindow::DlgProc,(LONG)((DWindow*)this))); return resultCode; } CallbackData::ReturnType EntryDialog::initDialogHandler(CallbackData &/*someCallbackData*/) { mPreviewRate=new Control(getItem(SETTINGS_PREVIEW_RATE),SETTINGS_PREVIEW_RATE,false); mPreviewRate.disposition(PointerDisposition::Delete); setPreviewRates(); getParams(); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType EntryDialog::dialogCodeHandler(CallbackData &/*someCallbackData*/) { return (CallbackData::ReturnType)DLGC_WANTALLKEYS; } CallbackData::ReturnType EntryDialog::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDOK : setParams(); endDialog(true); break; case IDCANCEL : endDialog(false); break; case SETTINGS_PREVIEW_640x480 : if(BN_CLICKED==someCallbackData.wmCommandCommand()) sendMessage(SETTINGS_PREVIEW_320x240,BM_SETCHECK,0,0L); break; case SETTINGS_PREVIEW_320x240 : if(BN_CLICKED==someCallbackData.wmCommandCommand()) sendMessage(SETTINGS_PREVIEW_640x480,BM_SETCHECK,0,0L); break; case SETTINGS_CAPTURE_320x240 : if(BN_CLICKED==someCallbackData.wmCommandCommand()) sendMessage(SETTINGS_CAPTURE_640x480,BM_SETCHECK,0,0L); break; case SETTINGS_CAPTURE_640x480 : if(BN_CLICKED==someCallbackData.wmCommandCommand()) sendMessage(SETTINGS_CAPTURE_320x240,BM_SETCHECK,0,0L); break; case SETTINGS_BROWSE : handleBrowse(); break; } return (CallbackData::ReturnType)FALSE; } void EntryDialog::handleBrowse(void) { OpenDirectory openDir; String strDirectory; String strFileName; if(openDir.getOpenDirectory(*this,"Choose Path",".",strDirectory)) { Profile profile; getText(SETTINGS_CAPTUREFILE,strFileName); profile.makeFileName(strFileName,strFileName); if(!(strDirectory[(DWORD)strDirectory.length()-1]=='\\'))strDirectory+="\\"; setText(SETTINGS_CAPTUREFILE,strDirectory+strFileName); } } void EntryDialog::getParams() { selectPreviewRate(mVidReg.getPreviewRate()); setText(SETTINGS_CAPTUREFILE,mVidReg.getCaptureFile()); if(mVidReg.getSequencing())sendMessage(SETTINGS_USESEQUENCING,BM_SETCHECK,true,0); if(320==mVidReg.getPreviewWidth())sendMessage(SETTINGS_PREVIEW_320x240,BM_SETCHECK,true,0); else sendMessage(SETTINGS_PREVIEW_640x480,BM_SETCHECK,true,0); if(320==mVidReg.getCaptureWidth())sendMessage(SETTINGS_CAPTURE_320x240,BM_SETCHECK,true,0); else sendMessage(SETTINGS_CAPTURE_640x480,BM_SETCHECK,true,0); } void EntryDialog::setParams(void) { String strCaptureFile; getText(SETTINGS_CAPTUREFILE,strCaptureFile); if(!verifyCaptureFile(strCaptureFile))return; if(!strCaptureFile.isNull())mVidReg.setCaptureFile(strCaptureFile); mVidReg.setPreviewRate(getPreviewRate()); if(sendMessage(SETTINGS_USESEQUENCING,BM_GETCHECK,0,0L))mVidReg.setSequencing(true); else mVidReg.setSequencing(false); if(sendMessage(SETTINGS_PREVIEW_320x240,BM_GETCHECK,0,0L)) { mVidReg.setPreviewWidth(320); mVidReg.setPreviewHeight(240); } else { mVidReg.setPreviewWidth(640); mVidReg.setPreviewHeight(480); } if(sendMessage(SETTINGS_CAPTURE_320x240,BM_GETCHECK,0,0L)) { mVidReg.setCaptureWidth(320); mVidReg.setCaptureHeight(240); } else { mVidReg.setCaptureWidth(640); mVidReg.setCaptureHeight(480); } } bool EntryDialog::verifyCaptureFile(const String &strCaptureFile) { Profile profile; DiskInfo diskInfo; String strDirectory; strDirectory=strCaptureFile; profile.makeDirectoryName(strDirectory); if(profile.verifyDirectory(strDirectory))return true; if(IDCANCEL==::MessageBox(*this,strDirectory,"Create Dirctory",MB_OKCANCEL))return false; if(!diskInfo.createDirectory(strDirectory))return false; return true; } void EntryDialog::selectPreviewRate(DWORD previewRate) { String strPreviewRate; int entries=mPreviewRate->sendMessage(CB_GETCOUNT,0,0L); bool itemSelected=false; for(int index=0;indexsendMessage(CB_GETLBTEXT,index,(LPARAM)(LPSTR)strPreviewRate); if(previewRate==strPreviewRate.toInt()) { mPreviewRate->sendMessage(CB_SETCURSEL,index,0L); itemSelected=true; break; } } if(!itemSelected)mPreviewRate->sendMessage(CB_SETCURSEL,0,0L); } DWORD EntryDialog::getPreviewRate(void) { String strPreviewRate; int index=mPreviewRate->sendMessage(CB_GETCURSEL,0,0L); mPreviewRate->sendMessage(CB_GETLBTEXT,index,(LPARAM)(LPSTR)strPreviewRate); if(strPreviewRate.isNull())return 0; return strPreviewRate.toInt(); } void EntryDialog::setPreviewRates(void) { mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"25"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"50"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"100"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"150"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"200"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"250"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"500"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"1000"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"15000"); mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"30000"); }