Реализация механизмов DDX/DDV средствами ClassWizard

   
На этом шаге мы рассмотрим реализацию механизма обмена и проверки данных средствами ClassWizard.

   
Чтобы увидеть код, добавленный ClassWizard для реализации механизма DDX/DDV, откройте файл
ConnectDialog.h и найдите описание новых переменных класса:

//{{AFX_DATA(CConnectDialog)
enum { IDD = IDD_CONNECTDIALOG };
CString	m_strUserID;
CString	m_strPassword;
int  m_nAccess;
BOOL	m_bConnect;
//}}AFX_DATA

   
Как и весь код, обслуживаемый ClassWizard, эти объявления находятся внутри блока //{{AFX_.

   
Найдите в файле ConnectDialog.cpp конструктор класса и код, добавленный ClassWizard для инициализации переменных по умолчанию:

//{{AFX_DATA_INIT(CConnectDialog)
m_strUserID = _T("");
m_strPassword = _T("");
m_nAccess = 0;
m_bConnect = FALSE;
//}}AFX_DATA_INIT

   
Обмен данными между элементами управления и приложением осуществляет функция CWnd::DoDataExchange().
Переопределяемая версия этой функции автоматически формируется средствами ClassWizard при создании класса, производного от
CDialog. ClassWizard добавляет в нее обращения к DDX/DDV-функциям.

   
Функция CConnectDialog::DoDataExchange() расположена в файле ConnectDialog.cpp и на данном этапе
должна выглядеть следующим образом:

void CConnectDialog::DoDataExchange(CDataExchange* pDX)
{
  CDialog::DoDataExchange(pDX);
  //{{AFX_DATA_MAP(CConnectDialog)
  DDX_Text(pDX, IDC_USERID, m_strUserID);
  DDV_MaxChars(pDX, m_strUserID, 15);
  DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
  DDV_MaxChars(pDX, m_strPassword, 15);
  DDX_Text(pDX, IDC_ACCESS, m_nAccess);
  DDV_MinMaxInt(pDX, m_nAccess, 1, 5);
  DDX_Check(pDX, IDC_CHECKCONTROL, m_bConnect);
  //}}AFX_DATA_MAP
}

   
Параметр pDX, передаваемый DDX/DDV-функциям, представляет собой объект MFC-класса
CDataExchange, инкапсулирующий контекст текущего обмена данными. Переменная
m_bSaveAndValidate класса CDataExchange задает направление передачи данных.
Если ее значение TRUE, то данные извлекаются из элемента управления для проверки и сохранения в
переменной класса диалога. В противном случае (FALSE) данные передаются в обратном направлении -
в диалоговое окно для изменения элемента управления.

   
На следующем шаге мы рассмотрим процесс обмена данными и проверки данных диалога.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий