Итак, мы сделали довольно много работы для того, чтобы жизнь стала легче. Давайте посмотрим, как можно применить наши классы в проекте. Мы сделаем проект с такой структурой.
По нажатию на кнопки должен появляться соответствующий диалог. Наша задача посмотреть как приято наследовать что то, а точнее наш класс CDaoDialog. Создаем проект на основе диалогового окна с именем TestDialog. Добавляем в наш проект два диалога из шаблона IDD_DIALOG_DAO и на основе этих шаблонов делаем два класса. Имена на схеме. Добавляем из компонентов CDaoDialog и CDaoNavigator. CDaoDialog наследуется от CDialog, а мы поменяет на CDaoDialog.
//////////////////////// // CDialogCar dialog #include "DaoDialog.h" class CDialogCar : public CDaoDialog { // Construction public: ...... }; ...... CDialogCar::CDialogCar(CWnd* pParent /*=NULL*/) : CDaoDialog(CDialogCar::IDD, pParent) { //{{AFX_DATA_INIT(CDialogCar) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } ......
То же самое надо сделать для класса CDialogDriver. То же самое надо сделать для класса CDialogDriver. Теперь надо создать два класса Set. Используя ClassWizard. Имена в таблице выше. Добавляем их к классу диалога как Foreign class именем m_pSet. Давайте инициализируем набор записей для CDialogCar.
CDialogCar::CDialogCar(CWnd* pParent /*=NULL*/) : CDaoDialog(CDialogCar::IDD, pParent) { //{{AFX_DATA_INIT(CDialogCar) m_pSet = NULL; //}}AFX_DATA_INIT m_pSet=new CCarSet(); m_pSet->Open(); SetRecorset(m_pSet); } ...... void CDialogCar::OnDestroy() { CDialog::OnDestroy(); delete m_pSet; }
Реакция на нажатие кнопок на диалоге.
void CDialogCar::OnButtonFirst() { First(); } void CDialogCar::OnButtonPrev() { Prev(); } void CDialogCar::OnButtonNext() { Next(); } void CDialogCar::OnButtonLast() { Last(); }
Все один к одному для CDialogDriver. Код нажатия на кнопки.
#include "DialogCar.h" #include "DialogDriver.h" ...... void CTestDialogDlg::OnButtonDriver() { CDialogDriver cd; cd.DoModal(); } void CTestDialogDlg::OnButtonCar() { CDialogCar cd; cd.DoModal(); }
Осталось только расставить и связать элементы управления на диалоговых окнах. Можно было еще сократить код договорившись, что набор записей всегда будет m_pSet. Пробуйте. В проекте готовое приложение. Самое главное в этом шаге посмотреть, что VC++ не так плох для баз данных. Что буквально несколько дополнительных классов и скорость разработки приложения будет не меньше чем на VB или Delphi. В следующих шагах мы сделаем еще несколько классов, и все станет еще приятнее. Но зато то чувство контроля и полной свободы не подарит Вам не один язык программирования кроме С++.