#ifndef _CASHFLOW_CALCDLG_HPP_ #define _CASHFLOW_CALCDLG_HPP_ #ifndef _COMMON_DWINDOW_HPP_ #include #endif #ifndef _COMMON_FONT_HPP_ #include #endif #ifndef _CASHFLOW_PREPAY_HPP_ #include #endif #ifndef _CASHFLOW_CALCTHREAD_HPP_ #include #endif class FPSheet; class GraphWindow; class CalcDlg : private DWindow { public: friend class CalcThread; CalcDlg(void); virtual ~CalcDlg(); void createDialog(HWND hParent); private: enum{xPos=2,yPos=15,cxPos=315,cyPos=45}; enum {IssBal,SMM,MtgPay,NetIntPay,GrossInt,SchPrn,Prepay,TotPrin,Cashflow,Factor}; CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData); CallbackData::ReturnType initHandler(CallbackData &someCallbackData); CallbackData::ReturnType commandHandler(CallbackData &someCallbackData); CallbackData::ReturnType closeHandler(CallbackData &someCallbackData); void handlePrepayments(void); void setColumnTitles(void); void setColumnTypes(void); void generateFlows(void); Callback mCommandHandler; Callback mDestroyHandler; Callback mInitHandler; Callback mCloseHandler; FPSheet *mlpCalcSheet; CalcThread *mlpCalcThread; GraphWindow *mlpGraphWindow; PrePay mPrePay; Font mFont; }; #pragma warning(disable:4355) inline CalcDlg::CalcDlg(void) : mlpCalcSheet(0), mlpCalcThread(0), mFont("Helv",6), mlpGraphWindow(0) { mDestroyHandler.setCallback(this,&CalcDlg::destroyHandler); mInitHandler.setCallback(this,&CalcDlg::initHandler); mCommandHandler.setCallback(this,&CalcDlg::commandHandler); mCloseHandler.setCallback(this,&CalcDlg::closeHandler); insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler); insertHandler(VectorHandler::InitDialogHandler,&mInitHandler); insertHandler(VectorHandler::CommandHandler,&mCommandHandler); insertHandler(VectorHandler::CloseHandler,&mCloseHandler); } #pragma warning(default:4355) inline CalcDlg::~CalcDlg() { removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler); removeHandler(VectorHandler::InitDialogHandler,&mInitHandler); removeHandler(VectorHandler::CommandHandler,&mCommandHandler); removeHandler(VectorHandler::CloseHandler,&mCloseHandler); } inline void CalcDlg::createDialog(HWND hParent) { HINSTANCE hInstance((HINSTANCE)::GetWindowLong(hParent,GWL_HINSTANCE)); ::DialogBoxParam(hInstance,(LPSTR)"Cashflow",hParent,DWindow::DlgProc,(LPARAM)(DWindow*)this); } #endif