Класс 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