Шаг 46.
Среда программирования Visual C++.
Реализация механизмов 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) данные передаются в обратном направлении - в диалоговое окно для изменения элемента управления.

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




Предыдущий шаг Содержание Следующий шаг