Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оценка привлекательности инвестиционного проект...docx
Скачиваний:
3
Добавлен:
15.08.2019
Размер:
658.79 Кб
Скачать

Тестирование системы и описание полученных результатов

Приложение является диалоговым и при запуске можно увидеть его главное окно (рис. 2).

Рис. 2. Главное окно приложения

В строке соединения указывается строка коннекта к MS SQL SERVER

Структура приложения состоит из главного окна и нескольких диалоговых.

На главном окне размещается информация обо всех финансовых показателях, содержащихся в данный момент в БД (рис. 2.). Кнопка «Добавить» используется для добавления записей в БД. При ее нажатии появляется диалоговое окно, показанное на рис. 3. Заполнив соответствующие поля информацией об издании необходимо нажать клавишу «OK», и информация о платежеспособности поместится в БД.

Рис. 3. Окно добавления оценки в БД

Рис. 4. Окно добавления предприятия в БД

С помощью функции «Поиск» (рис. 5) можно производить поиск по БД. Необходимо указать код оценки. После нажатия кнопки «Поиск» информация о найденных оценках будет размещена в списке.

Кнопка «Удалить» напротив списка оценок удаляет выбранную оценку из БД. (рис 6.)

Кнопка «Удалить предприятие» удаляет выбранную предприятие с оценкой(!) из БД.

С помощью функции «РАСЧЕТ можно рассчитать индекс прибыльности. ВНИМАНИЕ ! для корректной работы функции ГРАФИК необходимо предварительно рассчитать ДВЕ оценки с помощью выбора соотвествующей оценки в списке и нажатия кнопки РАСЧЕТ.

С помощью функции «График» (рис. 7) можно построить график по ДВУМ оценкам. Для корректной работы этой функции необходимио предварительно рассчитать ДВЕ оценки с помощью выбора соответствующей оценки в списке и нажатия кнопки РАСЧЕТ.

Рис. 5. Поиск по БД

Рис 6. Удаление оценки из БД

Рис 7. График оценок

Рис 8. Сохранение результатов в файл out.txt

Приложение а

Схема обобщенного алгоритма работы программы

Приложение б

Схема алгоритма работы метода

Список использованных источников.

  1. Грегори К. Использование Visual C++ 6.0. Специальное издание / К. Грегори – М.: Вильямс, 2002.

  2. Дейт К. Дж. Введение в системы баз данных / К. Дж. Дейт – Киев: Диалектика, 1998.

  3. Кириллов В.В. Основы проектирования реляционных баз данных [Электронный ресурс] – Режим доступа - http://www.cit-forum.com.

  4. Кузнецов С. Д. Основы современных баз данных [Электронный ресурс] – Режим доступа - http://www.cit-forum.com.

  5. Либерти Д. Освой самостоятельно С++ / Д. Либерти – М.: Вильямс, 2001.

  6. Рихтер Д. Windows для профессионалов / Д. Рихтер – СПб.: Питер, 2003.

  7. Страуструп Бьерн Язык программирования С++. Специальное издание / Б. Страуструп – М.: BINOM, 2002.

  8. Шеферд Д. Программирование на Microsoft Visual C++ .NET / Д. Шеферд – М.: Русская редакция, 2003. – 928

Программная реализация (листинг программных модулей с пояснениями)

// DIALOG_MAIN.cpp : implementation file

//

#include "stdafx.h"

#include "ProfitabilityIndex.h"

#include "DIALOG_MAIN.h"

#include "ProfitabilityIndex.h"

#include "ProfitabilityIndexDlg.h"

#include "DIALOG_ADD.h"

#include "DialogFind2.h"

#include "DialogGraph.h"

#include "Dialog_ADD2.h"

#include "MyCRec2.h"

//#include "MyLibrary.h"

//#include "DIALOG_MAIN.h"

//#include "MyLibraryDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CDIALOG_MAIN dialog

CDIALOG_MAIN::CDIALOG_MAIN(CWnd* pParent /*=NULL*/)

: CDialog(CDIALOG_MAIN::IDD, pParent)

, m_ConnectionString(_T(""))

{

//{{AFX_DATA_INIT(CDIALOG_MAIN)

// NOTE: the ClassWizard will add member initialization here

//}}AFX_DATA_INIT

}

void CDIALOG_MAIN::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CDIALOG_MAIN)

// NOTE: the ClassWizard will add DDX and DDV calls here

DDX_Control(pDX, IDC_LIST1, m_main_list2);

//}}AFX_DATA_MAP

DDX_Text(pDX, IDC_EDIT1, m_ConnectionString);

}

BEGIN_MESSAGE_MAP(CDIALOG_MAIN, CDialog)

//{{AFX_MSG_MAP(CDIALOG_MAIN)

ON_BN_CLICKED(IDC_BUTTON_GOODS_ADD, OnButtonGoodsAdd)

ON_BN_CLICKED(IDC_BUTTON_GOODS_DEL, OnButtonGoodsDel)

ON_BN_CLICKED(IDC_BUTTON_GOODS_EDIT, OnButtonGoodsEdit)

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDC_BUTTON_HELP, &CDIALOG_MAIN::OnBnClickedButtonHelp)

ON_BN_CLICKED(IDC_BUTTON_FIND, &CDIALOG_MAIN::OnBnClickedButtonFind)

ON_NOTIFY(LVN_COLUMNCLICK, IDC_LIST1, &CDIALOG_MAIN::OnLvnColumnclickList1)

ON_BN_CLICKED(IDC_BUTTON_GRAPH, &CDIALOG_MAIN::OnBnClickedButtonGraph)

ON_BN_CLICKED(IDC_BUTTON_COUNT_INDEX_PROF, &CDIALOG_MAIN::OnBnClickedButtonCountIndexProf)

ON_BN_CLICKED(IDC_BUTTON_SAVE_INFILE, &CDIALOG_MAIN::OnBnClickedButtonSaveInfile)

//ON_BN_CLICKED(IDC_BUTTON_CONNECT_TODB, &CDIALOG_MAIN::OnBnClickedButtonConnectTodb)

ON_BN_CLICKED(IDC_BUTTON_ADD_FACTORY, &CDIALOG_MAIN::OnBnClickedButtonAddFactory)

ON_BN_CLICKED(IDC_BUTTON_DEL_FACTORY, &CDIALOG_MAIN::OnBnClickedButtonDelFactory)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CDIALOG_MAIN message handlers

/*void CDIALOG_MAIN::OnButtonEditMain()

{

CDIALOG_ADD editbutton;

if (IDOK == editbutton.DoModal())

{

}

}

void CDIALOG_MAIN::OnButtonAddMain()

{

CDIALOG_ADD addbutton;

if (IDOK == addbutton.DoModal())

{

}

FillList();

}*/

void CDIALOG_MAIN::FillList()

{

CString tmp;

CDBVariant v;

LV_ITEM item;

item.mask = LVIF_TEXT;

int i=0;

CDatabase* m_mdb;

TEXTMETRIC tm;

m_main_list2.DeleteAllItems();

// Delete all of the columns.

int nColumnCount = m_main_list2.GetHeaderCtrl()->GetItemCount();

for (int k=0;k < nColumnCount;k++)

{

m_main_list2.DeleteColumn(0);

}

//Filling Columns and draw gridlines

GetDC()->GetTextMetrics(&tm);

ListView_SetExtendedListViewStyle(m_main_list2.m_hWnd, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

m_main_list2.InsertColumn(0,_T("Предприятие"),LVCFMT_LEFT,20*tm.tmAveCharWidth);

m_main_list2.InsertColumn(1,_T("Индекс прибыльности"),LVCFMT_LEFT,30*tm.tmAveCharWidth);

m_main_list2.InsertColumn(2,_T("Чистые приведенные денежные потоки проекта"),LVCFMT_LEFT,30*tm.tmAveCharWidth);

m_main_list2.InsertColumn(3,_T("Первоначальные затраты"),LVCFMT_LEFT,30*tm.tmAveCharWidth);

//Get pointer of the main window

CProfitabilityIndexDlg * mDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

m_mdb=mDlg->m_db;

MyCRec rs(m_mdb);

MyCRec2 rs2(m_mdb);

//SELECT [PInd],[NPV],[Co] FROM [ProfitabilityIndex].[dbo].[PIndex]

//rs.Open(CRecordset::snapshot,"SELECT * FROM PIndex;",CRecordset::readOnly);

rs.Open(CRecordset::snapshot,"SELECT [PInd],[NPV],[Co] FROM [ProfitabilityIndex].[dbo].[PIndex];",CRecordset::readOnly);

rs2.Open(CRecordset::snapshot,"SELECT [name] FROM [ProfitabilityIndex].[dbo].[Factory];",CRecordset::readOnly);

while (!rs.IsEOF() || !rs2.IsEOF())

{

item.iItem = i;

item.iSubItem = 0;

item.pszText="";

m_main_list2.InsertItem(&item);

if(!rs2.IsEOF())

{

rs2.GetFieldValue("name",v);

CStringA* nm = v.m_pstringA;

m_main_list2.SetItemText(i,0,(LPSTR)nm->GetBuffer());

}

if (!rs.IsEOF())

{

rs.GetFieldValue("PInd",v);

tmp.Format("%d",v.m_iVal);

m_main_list2.SetItemText(i,1,tmp);

rs.GetFieldValue("NPV",v);

tmp.Format("%d",v.m_iVal);

m_main_list2.SetItemText(i,2,tmp);

rs.GetFieldValue("Co",v);

tmp.Format("%d",v.m_iVal);

m_main_list2.SetItemText(i,3,tmp);

}

if (!rs.IsEOF())

rs.MoveNext();

if(!rs2.IsEOF())

rs2.MoveNext();

i++;

}

// i=0;

// while (!rs2.IsEOF())

// {

// item.iItem = i;

// item.iSubItem = 0;

// item.pszText="";

// m_main_list2.InsertItem(&item);

//

// rs2.GetFieldValue("name",v);

// CStringA* nm = v.m_pstringA;

// m_main_list2.SetItemText(i,0,(LPSTR)nm->GetBuffer());

// rs2.MoveNext();

// }

rs.Close();

rs2.Close();

}

BOOL CDIALOG_MAIN::OnInitDialog()

{

CDialog::OnInitDialog();

m_ConnectionString = _T("Driver=SQL SERVER;Server=localhost\\SQLEXPRESS;Database=ProfitabilityIndex;User ID=;Password=;Trusted_Connection=False;");

UpdateData(FALSE);

//FillList();//Filling List

return TRUE; // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}

static BOOL bAscending=TRUE;

static int last_nCol=-1;

static int numzap;

BOOL CDIALOG_MAIN::ListSorting(int nCol, BOOL bAscending, int low, int high)

{

CListCtrl* pm_lc;

pm_lc=&m_main_list2;

CHeaderCtrl* pHeader = (CHeaderCtrl*) m_main_list2.GetDlgItem(0);

int kol_stb = pHeader->GetItemCount();

if( nCol >= kol_stb )

return FALSE;

if( high == -1 ) high = pm_lc->GetItemCount() - 1;

int lo = low;

int hi = high;

CString midItem;

if( hi <= lo ) return FALSE;

midItem = pm_lc->GetItemText( (lo+hi)/2, nCol );

// loop through the list until indices cross

while( lo <= hi )

{

// rowText will hold all column text for one row

CStringArray rowText;

// find the first element that is greater than or equal to

// the partition element starting from the left Index.

if( bAscending )

while( ( lo < high ) && ( pm_lc->GetItemText(lo, nCol) < midItem ) )

++lo;

else

while( ( lo < high ) && ( pm_lc->GetItemText(lo, nCol) > midItem ) )

++lo;

// find an element that is smaller than or equal to

// the partition element starting from the right Index.

if( bAscending )

while( ( hi > low ) && ( pm_lc->GetItemText(hi, nCol) > midItem ) )

--hi;

else

while( ( hi > low ) && ( pm_lc->GetItemText(hi, nCol) < midItem ) )

--hi;

// if the indexes have not crossed, swap

// and if the items are not equal

if( lo <= hi )

{

// swap only if the items are not equal

if( pm_lc->GetItemText(lo, nCol) != pm_lc->GetItemText(hi, nCol))

{

// swap the rows

LV_ITEM lvitemlo, lvitemhi;

int nColCount = kol_stb;

rowText.SetSize( nColCount );

int i;

for( i=0; i<nColCount; i++)

rowText[i] = pm_lc->GetItemText(lo, i);

lvitemlo.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;

lvitemlo.iItem = lo;

lvitemlo.iSubItem = 0;

lvitemlo.stateMask = LVIS_CUT | LVIS_DROPHILITED |

LVIS_FOCUSED | LVIS_SELECTED |

LVIS_OVERLAYMASK | LVIS_STATEIMAGEMASK;

lvitemhi = lvitemlo;

lvitemhi.iItem = hi;

pm_lc->GetItem( &lvitemlo );

pm_lc->GetItem( &lvitemhi );

for( i=0; i<nColCount; i++)

pm_lc->SetItemText(lo, i, pm_lc->GetItemText(hi, i));

lvitemhi.iItem = lo;

pm_lc->SetItem( &lvitemhi );

for( i=0; i<nColCount; i++)

pm_lc->SetItemText(hi, i, rowText[i]);

lvitemlo.iItem = hi;

pm_lc->SetItem( &lvitemlo );

}

++lo;

--hi;

}

}

// If the right index has not reached the left side of array

// must now sort the left partition.

if( low < hi )

ListSorting( nCol, bAscending , low, hi);

// If the left index has not reached the right side of array

// must now sort the right partition.

if( lo < high )

ListSorting( nCol, bAscending , lo, high );

return TRUE;

}

void CDIALOG_MAIN::OnColumnclickList2(NMHDR* pNMHDR, LRESULT* pResult)

{

NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

int nCol = pNMListView->iSubItem;

int low = 0, high = -1;

if(last_nCol!=nCol)

last_nCol=nCol;

else

if(last_nCol==nCol)

bAscending=!bAscending;

ListSorting(nCol, bAscending, low, high);

if(numzap!=0)

//recount();

*pResult = 0;

}

void CDIALOG_MAIN::OnButtonLoad()

{

FillList();

}

void CDIALOG_MAIN::OnButtonGoodsAdd()

{

// TODO: Add your control notification handler code here

CDIALOG_ADD addDialog;

int nItem = 0;

POSITION pos = m_main_list2.GetFirstSelectedItemPosition();

if (pos == NULL)

{

TRACE(_T("No items were selected!\n"));

}

else

{

while (pos)

{

nItem = m_main_list2.GetNextSelectedItem(pos);

}

}

if (IDOK == addDialog.DoModal())

{

addDialog.AddGoods(nItem);

}

FillList();

}

void CDIALOG_MAIN::OnButtonGoodsDel()

{

POSITION pos = m_main_list2.GetFirstSelectedItemPosition();

int index_del;

CDBVariant v;

CDatabase* m_pDB;

CProfitabilityIndexDlg * m_pDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

m_pDB = m_pDlg->m_db;

index_del =(int)pos-1;

CRecordset rs(m_pDB);

rs.Open(CRecordset::dynaset,"SELECT [PInd],[NPV],[Co] FROM [ProfitabilityIndex].[dbo].[PIndex];",CRecordset::dynamic);

rs.Move(index_del);

rs.Delete();

rs.MoveFirst();

rs.Close();

FillList();

}

void CDIALOG_MAIN::OnButtonGoodsEdit()

{

CDIALOG_ADD addDialog;

CDBVariant v;

CDatabase* m_pDB;

CProfitabilityIndexDlg * m_pDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

m_pDB = m_pDlg->m_db;

CRecordset rs(m_pDB);

rs.Open(CRecordset::dynaset,"SELECT [PInd],[NPV],[Co] FROM [ProfitabilityIndex].[dbo].[PIndex];",CRecordset::dynamic);

int nItem = 0;

POSITION pos = m_main_list2.GetFirstSelectedItemPosition();

if (pos == NULL)

{

TRACE(_T("No items were selected!\n"));

}

else

{

while (pos)

{

nItem = m_main_list2.GetNextSelectedItem(pos);

}

}

rs.Move(nItem);

//rs.Edit();

rs.GetFieldValue("NPV",v);

addDialog.m_nNPV = v.m_iVal;

rs.GetFieldValue("Co",v);

addDialog.m_nCo = v.m_iVal;

if (IDOK == addDialog.DoModal())

{

addDialog.EditGoods(nItem);

}

FillList();

}

void CDIALOG_MAIN::OnBnClickedButtonHelp()

{

// TODO: добавьте свой код обработчика уведомлений

::ShellExecute(0,0,_T("explorer.exe"),_T("HelpContent.htm"),0,SW_SHOW);

}

void CDIALOG_MAIN::OnBnClickedButtonFind()

{

// TODO: добавьте свой код обработчика уведомлений

CDialogFind2 findDialog;

if (IDOK == findDialog.DoModal())

{

}

}

void CDIALOG_MAIN::OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult)

{

NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

int nCol = pNMListView->iSubItem;

int low = 0, high = -1;

if(last_nCol!=nCol)

last_nCol=nCol;

else

if(last_nCol==nCol)

bAscending=!bAscending;

ListSorting(nCol, bAscending, low, high);

if(numzap!=0)

//recount();

*pResult = 0;

}

void CDIALOG_MAIN::OnBnClickedButtonGraph()

{

// TODO: добавьте свой код обработчика уведомлений

CDialogGraph dlg;

dlg.m_nPInd1 = m_nPInd1;

dlg.m_nPInd2 = m_nPInd2;

dlg.DoModal();

}

void CDIALOG_MAIN::OnBnClickedButtonCountIndexProf()

{

int PInd;

CDatabase* m_mdb;

CDBVariant v;

int i=0;

//Get pointer of the main window

CProfitabilityIndexDlg * mDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

m_mdb=mDlg->m_db;

CRecordset rs(m_mdb);

rs.Open(CRecordset::dynaset,"SELECT [PInd],[NPV],[Co] FROM [ProfitabilityIndex].[dbo].[PIndex];",CRecordset::dynamic);

int nItem = 0;

POSITION pos = m_main_list2.GetFirstSelectedItemPosition();

if (pos == NULL)

{

TRACE(_T("No items were selected!\n"));

}

else

{

while (pos)

{

nItem = m_main_list2.GetNextSelectedItem(pos);

}

}

rs.Move(nItem);

rs.GetFieldValue("NPV",v);

int NPV = v.m_iVal;

rs.GetFieldValue("Co",v);

int Co = v.m_iVal;

PInd=NPV/Co;

if(nItem == 0)

m_nPInd1 = PInd;

else

m_nPInd2 = PInd;

Updatem_PInd(nItem, PInd);

FillList();// TODO: добавьте свой код обработчика уведомлений

}

bool CDIALOG_MAIN::Updatem_PInd(int RecordPos, int nVal)

{

CDatabase* m_mdb;

CDBVariant v;

int i=0;

long pos,l;

//Get pointer of the main window

CProfitabilityIndexDlg * mDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

m_mdb=mDlg->m_db;

MyCRec rs(m_mdb);

rs.m_nFields=4;

rs.Open(CRecordset::dynaset,"SELECT [PInd] FROM [ProfitabilityIndex].[dbo].[PIndex];",CRecordset::dynamic);

rs.Move(RecordPos);

rs.Edit();

rs.m_nPInd = nVal;

rs.Update();

rs.Close();

return true;

}

void CDIALOG_MAIN::OnBnClickedButtonSaveInfile()

{

CProfitabilityIndexDlg * mDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

CDatabase* m_mdb;

m_mdb=mDlg->m_db;

CDBVariant v;

int i=0;

CString tmp, str_out;

CFile file;

CFileException e;

file.Open("out.txt",CFile::modeCreate | CFile::modeWrite, &e);

MyCRec rs(m_mdb);

rs.Open(CRecordset::snapshot,"SELECT [PInd],[NPV],[Co] FROM [ProfitabilityIndex].[dbo].[PIndex];",CRecordset::readOnly);

while (!rs.IsEOF())

{

rs.GetFieldValue("PInd",v);

tmp.Format("%d",v.m_iVal);

str_out = tmp + " ";

rs.GetFieldValue("NPV",v);

tmp.Format("%d",v.m_iVal);

str_out += (tmp + " ");

rs.GetFieldValue("Co",v);

tmp.Format("%d",v.m_iVal);

str_out += (tmp + "\r\n");

file.Write(str_out,str_out.GetLength());

rs.MoveNext();

i++;

}

file.Close();

rs.Close();

}

void CDIALOG_MAIN::OnBnClickedButtonConnectTodb()

{

// TODO: добавьте свой код обработчика уведомлений

}

void CDIALOG_MAIN::OnBnClickedButtonAddFactory()

{

// TODO: добавьте свой код обработчика уведомлений

CDIALOG_ADD2 addDialog;

if (IDOK == addDialog.DoModal())

{

UpdateData(TRUE);

CProfitabilityIndexDlg * mDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

CDatabase* m_mdb;

m_mdb=mDlg->m_db;

MyCRec2 rs(m_mdb);

rs.m_nFields=1;

rs.Open(CRecordset::dynaset,"SELECT [name] FROM [ProfitabilityIndex].[dbo].[Factory];",CRecordset::dynamic);

if(rs.CanAppend())

{

rs.AddNew();

}

rs.m_sName = addDialog.m_sName;

rs.Update();

rs.Close();

}

FillList();

}

void CDIALOG_MAIN::OnBnClickedButtonDelFactory()

{

// TODO: добавьте свой код обработчика уведомлений

POSITION pos = m_main_list2.GetFirstSelectedItemPosition();

int index_del;

CDBVariant v;

CDatabase* m_pDB;

CProfitabilityIndexDlg * m_pDlg = (CProfitabilityIndexDlg *)AfxGetMainWnd();

m_pDB = m_pDlg->m_db;

index_del =(int)pos-1;

CRecordset rs(m_pDB);

rs.Open(CRecordset::dynaset,"SELECT [id],[PInd],[NPV],[Co],[id_factory] FROM [ProfitabilityIndex].[dbo].[PIndex];",CRecordset::dynamic);

CRecordset rs2(m_pDB);

rs2.Open(CRecordset::dynaset,"SELECT * FROM [ProfitabilityIndex].[dbo].[Factory];",CRecordset::dynamic);

rs.Move(index_del);

rs.Delete();

rs.MoveFirst();

rs.Close();

rs2.Move(index_del);

rs2.Delete();

rs2.MoveFirst();

rs2.Close();

FillList();

}

// DIALOG_FIND.cpp : implementation file

//

#include "stdafx.h"

#include "ProfitabilityIndex.h"

#include "DIALOG_FIND.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CDIALOG_FIND dialog

CDIALOG_FIND::CDIALOG_FIND(CWnd* pParent /*=NULL*/)

: CDialog(CDIALOG_FIND::IDD, pParent)

{

//{{AFX_DATA_INIT(CDIALOG_FIND)

// NOTE: the ClassWizard will add member initialization here

//}}AFX_DATA_INIT

}

void CDIALOG_FIND::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CDIALOG_FIND)

// NOTE: the ClassWizard will add DDX and DDV calls here

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CDIALOG_FIND, CDialog)

//{{AFX_MSG_MAP(CDIALOG_FIND)

// NOTE: the ClassWizard will add message map macros here

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CDIALOG_FIND message handlers

33