Поделиться через


Класс CDataExchange

Поддерживает процедуры обмена данными диалогового окна (DDX) и проверки данных диалогового окна (DDV), используемые классами Microsoft Foundation.

Синтаксис

class CDataExchange

Участники

Открытые конструкторы

Имя Описание
CDataExchange::CDataExchange Формирует объект CDataExchange.

Открытые методы

Имя Описание
CDataExchange::Fail Вызывается при сбое проверки. Сбрасывает фокус на предыдущий элемент управления и создает исключение.
CDataExchange::P repareCtrl Подготавливает указанный элемент управления для обмена данными или проверки. Используется для элементов управления nonedit.
CDataExchange::P repareEditCtrl Подготавливает указанный элемент управления редактирования для обмена данными или проверки.
CDataExchange::P repareOleCtrl Подготавливает указанный элемент управления OLE для обмена данными или проверки. Используется для элементов управления nonedit.

Открытые члены данных

Имя Описание
CDataExchange::m_bSaveAndValidate Пометка направления DDX и DDV.
CDataExchange::m_pDlgWnd Диалоговое окно или окно, в котором происходит обмен данными.

Замечания

CDataExchange не имеет базового класса.

Используйте этот класс, если вы пишете подпрограммы обмена данными для пользовательских типов данных или элементов управления, или если вы пишете собственные процедуры проверки данных. Дополнительные сведения о написании собственных подпрограмм DDX и DDV см . в техническом примечание 26. Общие сведения о DDX и DDV см . в диалоговом окне "Обмен данными" и "Проверка " и "Диалоговые окна".

Объект CDataExchange предоставляет сведения о контексте, необходимые для выполнения DDX и DDV. Флаг m_bSaveAndValidate имеет значение FALSE, если DDX используется для заполнения начальных значений элементов управления диалогом из элементов данных. Флаг m_bSaveAndValidate имеет значение TRUE, если DDX используется для задания текущих значений элементов управления диалоговым окном в члены данных и при использовании DDV для проверки значений данных. Если проверка DDV завершается ошибкой, процедура DDV отобразит окно сообщения, объясняющее ошибку ввода. Затем процедура DDV вызовет Fail сброс фокуса на элемент управления обижений и вызовет исключение, чтобы остановить процесс проверки.

Иерархия наследования

CDataExchange

Требования

Заголовок: afxwin.h

CDataExchange::CDataExchange

Вызовите эту функцию-член для создания CDataExchange объекта.

CDataExchange(
    CWnd* pDlgWnd,
    BOOL bSaveAndValidate);

Параметры

pDlgWnd
Указатель на родительское окно, содержащее элемент управления. Обычно это объект, производный от CDialog.

bSaveAndValidate
Если значение TRUE, этот объект проверяет данные, а затем записывает данные из элементов управления. Если значение FALSE, этот объект перемещает данные из элементов в элементы управления.

Замечания

CDataExchange Создайте объект самостоятельно для хранения дополнительных сведений в объекте обмена данными для передачи в функцию члена CWnd::D oDataExchange.

Пример

CYourDataExchange dx(this, FALSE);
try
{
   DoDataExchange(&dx);
}
catch (CUserException *pe)
{
   // some part of the exchange went wrong
   // but the user has already been notified
   pe->Delete();
}

CDataExchange::Fail

Платформа вызывает эту функцию-член, когда операция проверки данных диалога (DDV) завершается ошибкой.

void Fail();

Замечания

Fail восстанавливает фокус и выделение элемента управления, проверка которого завершилась ошибкой (если требуется восстановить элемент управления). Fail Затем вызывает исключение типа CUserException , чтобы остановить процесс проверки. Исключение приводит к отображению сообщения, объясняющего ошибку. После сбоя проверки DDV пользователь может повторно ввести данные в элементе управления оскорбления.

Реализующие пользовательские подпрограммы DDV могут вызываться Fail из своих подпрограмм при сбое проверки.

Дополнительные сведения о написании собственных подпрограмм DDX и DDV см . в техническом примечание 26. Общие сведения о DDX и DDV см. в разделах " Диалоговое окно "Обмен данными" и " Проверка " и "Диалоговые окна".

CDataExchange::m_bSaveAndValidate

Этот флаг указывает направление операции обмена данными диалога (DDX).

BOOL m_bSaveAndValidate;

Замечания

Флаг является ненулевой, если CDataExchange объект используется для перемещения данных из элементов управления диалоговым окном в элементы данных класса диалогов после изменения элементов управления пользователем. Флаг равен нулю, если объект используется для инициализации элементов управления диалоговым окном из элементов данных класса диалогов.

Флаг также является ненулевой во время проверки данных диалога (DDV).

Дополнительные сведения о написании собственных подпрограмм DDX и DDV см . в техническом примечание 26. Общие сведения о DDX и DDV см. в разделах " Диалоговое окно "Обмен данными" и " Проверка " и "Диалоговые окна".

CDataExchange::m_pDlgWnd

Содержит указатель на объект CWnd , для которого выполняется обмен данными диалога (DDX) или проверка (DDV).

CWnd* m_pDlgWnd;

Замечания

Обычно этот объект является объектом CDialog . Реализующие пользовательские подпрограммы DDX или DDV могут использовать этот указатель для получения доступа к диалоговому окну, содержашем элементы управления, на которые они работают.

Дополнительные сведения о написании собственных подпрограмм DDX и DDV см . в техническом примечание 26. Общие сведения о DDX и DDV см. в разделах " Диалоговое окно "Обмен данными" и " Проверка " и "Диалоговые окна".

CDataExchange::P repareCtrl

Платформа вызывает эту функцию-член для подготовки указанного элемента управления для обмена данными диалога (DDX) и проверки (DDV).

HWND PrepareCtrl(int nIDC);

Параметры

nIDC
Идентификатор элемента управления, подготовленный для DDX или DDV.

Возвращаемое значение

HWND элемента управления, подготовленного для DDX или DDV.

Замечания

Вместо этого используйте PrepareEditCtrl для элементов управления редактированием; используйте эту функцию-член для всех остальных элементов управления.

Подготовка состоит из хранения HWND элемента управления в CDataExchange классе. Платформа использует этот дескриптор для восстановления фокуса до ранее ориентированного элемента управления в случае сбоя DDX или DDV.

Реализующие пользовательские подпрограммы DDX или DDV должны вызывать PrepareCtrl все нередактируемые элементы управления, для которых они обмениваются данными через DDX или проверяют данные через DDV.

Дополнительные сведения о написании собственных подпрограмм DDX и DDV см . в техническом примечание 26. Общие сведения о DDX и DDV см. в разделах " Диалоговое окно "Обмен данными" и " Проверка " и "Диалоговые окна".

CDataExchange::P repareEditCtrl

Платформа вызывает эту функцию-член для подготовки указанного элемента управления редактирования для обмена данными диалога (DDX) и проверки (DDV).

HWND PrepareEditCtrl(int nIDC);

Параметры

nIDC
Идентификатор элемента управления редактирования для подготовки К DDX или DDV.

Возвращаемое значение

HWND элемента управления редактирования, подготовленного для DDX или DDV.

Замечания

Используйте PrepareCtrl вместо всех элементов управления без правки.

Подготовка состоит из двух вещей. Во-первых, PrepareEditCtrl сохраняет HWND элемента управления в CDataExchange классе. Платформа использует этот дескриптор для восстановления фокуса до ранее ориентированного элемента управления в случае сбоя DDX или DDV. Во-вторых, задает флаг в CDataExchange классе, чтобы указать, PrepareEditCtrl что элемент управления, данные которого обмениваются или проверяются, является элементом управления редактированием.

Реализующие пользовательские подпрограммы DDX или DDV должны вызывать PrepareEditCtrl все элементы управления редактированием, для которых они обмениваются данными через DDX или проверяют данные через DDV.

Дополнительные сведения о написании собственных подпрограмм DDX и DDV см . в техническом примечание 26. Общие сведения о DDX и DDV см. в разделах " Диалоговое окно "Обмен данными" и " Проверка " и "Диалоговые окна".

CDataExchange::P repareOleCtrl

Платформа вызывает эту функцию-член для подготовки указанного элемента управления OLE для обмена данными диалога (DDX) и проверки (DDV).

COleControlSite* PrepareOleCtrl(int nIDC);

Параметры

nIDC
Идентификатор элемента управления OLE для подготовки к DDX или DDV.

Возвращаемое значение

Указатель на сайт управления OLE.

Замечания

Вместо этого используйте PrepareEditCtrl для редактирования элементов управления или PrepareCtrl для всех других элементов управления, отличных от OLE.

Реализующие пользовательские подпрограммы DDX или DDV должны вызывать PrepareOleCtrl все элементы управления OLE, для которых они обмениваются данными через DDX или проверяют данные через DDV.

Дополнительные сведения о написании собственных подпрограмм DDX и DDV см . в техническом примечание 26. Общие сведения о DDX и DDV см. в разделах " Диалоговое окно "Обмен данными" и " Проверка " и "Диалоговые окна".

См. также

Пример VIEWEX для MFC
Диаграмма иерархии
CWnd::D oDataExchange
CWnd::UpdateData