#include #include #include #include #include #include AdjustDissolve::AdjustDissolve(HWND hParent) : mhParent(hParent), mhInstance(Main::processInstance(hParent)) { } AdjustDissolve::~AdjustDissolve() { } WORD AdjustDissolve::adjustDissolve(Block &dissolveSchedule,WORD nFrames) { WORD returnCode(FALSE); if(!nFrames)return returnCode; if(dissolveSchedule.size()) { mDissolveSchedule=dissolveSchedule; mFrames=(int)mDissolveSchedule.size(); } else mFrames=nFrames; returnCode=::DialogBoxParam(mhInstance,(LPSTR)"Dissolve",mhParent,(DLGPROC)DWindow::DialogProcedure,(LONG)((DWindow*)this)); if(returnCode)dissolveSchedule=mDissolveSchedule; else dissolveSchedule.remove(); return returnCode; } int AdjustDissolve::DlgProc(UINT message,WPARAM wParam,LPARAM lParam) { switch(message) { case WM_INITDIALOG : Main::smhBitmap.associate(IDOK, String(STRING_BITMAPOKFOCUSUP,mhInstance), String(STRING_BITMAPOKNOFUP,mhInstance), String(STRING_BITMAPOKFOCUSDN,mhInstance),OwnerDraw::NOFOCUS); Main::smhBitmap.associate(IDCANCEL, String(STRING_BITMAPCAFOCUSUP,mhInstance), String(STRING_BITMAPCANOFUP,mhInstance), String(STRING_BITMAPCAFOCUSDN,mhInstance),OwnerDraw::NOFOCUS); initializeList(); return TRUE; case WM_DRAWITEM : switch(((LPDRAWITEMSTRUCT)lParam)->CtlID) { case IDOK : Main::smhBitmap.handleOwnerButton(IDOK,lParam); return TRUE; case IDCANCEL : Main::smhBitmap.handleOwnerButton(IDCANCEL,lParam); return TRUE; } break; case WM_COMMAND : switch(GET_WM_COMMAND_ID(wParam,lParam)) { case DSLV_LIST : if(LBN_DBLCLK==HIWORD(lParam))handleEditEvent(); break; case IDCANCEL : Main::smhBitmap.freeButton(IDOK); Main::smhBitmap.freeButton(IDCANCEL); ::EndDialog(GetHandle(),FALSE); return TRUE; case IDOK : Main::smhBitmap.freeButton(IDOK); Main::smhBitmap.freeButton(IDCANCEL); ::EndDialog(GetHandle(),TRUE); return TRUE; } } return FALSE; } void AdjustDissolve::initializeList(void) { String formattingString; size_t size; formattingString.reserve(String::MaxString); if(!mDissolveSchedule.size())Schedule::createSchedule(mDissolveSchedule,mFrames); size=(int)mDissolveSchedule.size(); ::SendDlgItemMessage(GetHandle(),DSLV_LIST,LB_RESETCONTENT,0,0L); ::SendDlgItemMessage(GetHandle(),DSLV_LIST,WM_SETREDRAW,FALSE,0L); for(int i=0;iCtlID) { case IDOK : Main::smhBitmap.handleOwnerButton(IDOK,lParam); return TRUE; case IDCANCEL : Main::smhBitmap.handleOwnerButton(IDCANCEL,lParam); return TRUE; } break; case WM_COMMAND : switch(GET_WM_COMMAND_ID(wParam,lParam)) { case IDCANCEL : Main::smhBitmap.freeButton(IDOK); Main::smhBitmap.freeButton(IDCANCEL); ::EndDialog(GetHandle(),FALSE); return TRUE; case IDOK : if(!captureDissolveSchedule()) { ::MessageBeep(0); break; } Main::smhBitmap.freeButton(IDOK); Main::smhBitmap.freeButton(IDCANCEL); ::EndDialog(GetHandle(),TRUE); return TRUE; } } return FALSE; } WORD EditItem::captureDissolveSchedule(void) { String tempString; ::GetDlgItemText(GetHandle(),EDITITEM_SOURCE,tempString,String::MaxString); mDissolveItem.srcWeight(::atof(tempString)); ::GetDlgItemText(GetHandle(),EDITITEM_DESTINATION,tempString,String::MaxString); mDissolveItem.dstWeight(::atof(tempString)); ::GetDlgItemText(GetHandle(),EDITITEM_REPEAT,tempString,String::MaxString); mDissolveItem.count(::atoi(tempString)); return mDissolveItem.isValid(); } void EditItem::displayDissolveSchedule(void)const { String tempString; ::sprintf(tempString,"%7.4lf",mDissolveItem.srcWeight()); ::SetDlgItemText(GetHandle(),EDITITEM_SOURCE,tempString); ::sprintf(tempString,"%7.4lf",mDissolveItem.dstWeight()); ::SetDlgItemText(GetHandle(),EDITITEM_DESTINATION,tempString); ::sprintf(tempString,"%d",mDissolveItem.count()); ::SetDlgItemText(GetHandle(),EDITITEM_REPEAT,tempString); }