Files
Work/cashflow/CALCDLG.HPP
2024-08-07 09:12:07 -04:00

82 lines
2.4 KiB
C++

#ifndef _CASHFLOW_CALCDLG_HPP_
#define _CASHFLOW_CALCDLG_HPP_
#ifndef _COMMON_DWINDOW_HPP_
#include <common/dwindow.hpp>
#endif
#ifndef _COMMON_FONT_HPP_
#include <common/font.hpp>
#endif
#ifndef _CASHFLOW_PREPAY_HPP_
#include <cashflow/prepay.hpp>
#endif
#ifndef _CASHFLOW_CALCTHREAD_HPP_
#include <cashflow/calcthrd.hpp>
#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<CalcDlg> mCommandHandler;
Callback<CalcDlg> mDestroyHandler;
Callback<CalcDlg> mInitHandler;
Callback<CalcDlg> 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