CDataExchange Class
Supports the dialog data exchange (DDX) and dialog data validation (DDV) routines used by the Microsoft Foundation classes.
Syntax
class CDataExchange
Members
Public Constructors
Name | Description |
---|---|
CDataExchange::CDataExchange | Constructs a CDataExchange object. |
Public Methods
Name | Description |
---|---|
CDataExchange::Fail | Called when validation fails. Resets focus to the previous control and throws an exception. |
CDataExchange::PrepareCtrl | Prepares the specified control for data exchange or validation. Use for nonedit controls. |
CDataExchange::PrepareEditCtrl | Prepares the specified edit control for data exchange or validation. |
CDataExchange::PrepareOleCtrl | Prepares the specified OLE control for data exchange or validation. Use for nonedit controls. |
Public Data Members
Name | Description |
---|---|
CDataExchange::m_bSaveAndValidate | Flag for the direction of DDX and DDV. |
CDataExchange::m_pDlgWnd | The dialog box or window where the data exchange takes place. |
Remarks
CDataExchange
does not have a base class.
Use this class if you are writing data exchange routines for custom data types or controls, or if you are writing your own data validation routines. For more information on writing your own DDX and DDV routines, see Technical Note 26. For an overview of DDX and DDV, see Dialog Data Exchange and Validation and Dialog Boxes.
A CDataExchange
object provides the context information needed for DDX and DDV to take place. The flag m_bSaveAndValidate is FALSE when DDX is used to fill the initial values of dialog controls from data members. The flag m_bSaveAndValidate is TRUE when DDX is used to set the current values of dialog controls into data members and when DDV is used to validate the data values. If the DDV validation fails, the DDV procedure will display a message box explaining the input error. The DDV procedure will then call Fail
to reset the focus to the offending control and throw an exception to stop the validation process.
Inheritance Hierarchy
CDataExchange
Requirements
Header: afxwin.h
CDataExchange::CDataExchange
Call this member function to construct a CDataExchange
object.
CDataExchange(
CWnd* pDlgWnd,
BOOL bSaveAndValidate);
Parameters
pDlgWnd
A pointer to the parent window that contains the control. Usually this is a CDialog-derived object.
bSaveAndValidate
If TRUE, this object validates data, then writes data from the controls to the members. If FALSE, this object will move data from members to controls.
Remarks
Construct a CDataExchange
object yourself to store extra information in the data exchange object to pass to your window's CWnd::DoDataExchange member function.
Example
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
The framework calls this member function when a dialog data validation (DDV) operation fails.
void Fail();
Remarks
Fail
restores the focus and selection to the control whose validation failed (if there is a control to restore). Fail
then throws an exception of type CUserException to stop the validation process. The exception causes a message box explaining the error to be displayed. After DDV validation fails, the user can reenter data in the offending control.
Implementors of custom DDV routines can call Fail
from their routines when a validation fails.
For more information on writing your own DDX and DDV routines, see Technical Note 26. For an overview of DDX and DDV, see Dialog Data Exchange and Validation and Dialog Box Topics.
CDataExchange::m_bSaveAndValidate
This flag indicates the direction of a dialog data exchange (DDX) operation.
BOOL m_bSaveAndValidate;
Remarks
The flag is nonzero if the CDataExchange
object is being used to move data from the dialog controls to dialog-class data members after the user edits the controls. The flag is zero if the object is being used to initialize dialog controls from dialog-class data members.
The flag is also nonzero during dialog data validation (DDV).
For more information on writing your own DDX and DDV routines, see Technical Note 26. For an overview of DDX and DDV, see Dialog Data Exchange and Validation and Dialog Box Topics.
CDataExchange::m_pDlgWnd
Contains a pointer to the CWnd object for which dialog data exchange (DDX) or validation (DDV) is taking place.
CWnd* m_pDlgWnd;
Remarks
This object is usually a CDialog object. Implementors of custom DDX or DDV routines can use this pointer to obtain access to the dialog window that contains the controls they are operating on.
For more information on writing your own DDX and DDV routines, see Technical Note 26. For an overview of DDX and DDV, see Dialog Data Exchange and Validation and Dialog Box Topics.
CDataExchange::PrepareCtrl
The framework calls this member function to prepare the specified control for dialog data exchange (DDX) and validation (DDV).
HWND PrepareCtrl(int nIDC);
Parameters
nIDC
The ID of the control to be prepared for DDX or DDV.
Return Value
The HWND of the control being prepared for DDX or DDV.
Remarks
Use PrepareEditCtrl instead for edit controls; use this member function for all other controls.
Preparation consists of storing the control's HWND in the CDataExchange
class. The framework uses this handle to restore the focus to the previously focused control in the event of a DDX or DDV failure.
Implementors of custom DDX or DDV routines should call PrepareCtrl
for all non-edit controls for which they are exchanging data via DDX or validating data via DDV.
For more information on writing your own DDX and DDV routines, see Technical Note 26. For an overview of DDX and DDV, see Dialog Data Exchange and Validation and Dialog Box Topics.
CDataExchange::PrepareEditCtrl
The framework calls this member function to prepare the specified edit control for dialog data exchange (DDX) and validation (DDV).
HWND PrepareEditCtrl(int nIDC);
Parameters
nIDC
The ID of the edit control to be prepared for DDX or DDV.
Return Value
The HWND of the edit control being prepared for DDX or DDV.
Remarks
Use PrepareCtrl instead for all non-edit controls.
Preparation consists of two things. First, PrepareEditCtrl
stores the control's HWND in the CDataExchange
class. The framework uses this handle to restore the focus to the previously focused control in the event of a DDX or DDV failure. Second, PrepareEditCtrl
sets a flag in the CDataExchange
class to indicate that the control whose data is being exchanged or validated is an edit control.
Implementors of custom DDX or DDV routines should call PrepareEditCtrl
for all edit controls for which they are exchanging data via DDX or validating data via DDV.
For more information on writing your own DDX and DDV routines, see Technical Note 26. For an overview of DDX and DDV, see Dialog Data Exchange and Validation and Dialog Box Topics.
CDataExchange::PrepareOleCtrl
The framework calls this member function to prepare the specified OLE control for dialog data exchange (DDX) and validation (DDV).
COleControlSite* PrepareOleCtrl(int nIDC);
Parameters
nIDC
The ID of the OLE control to be prepared for DDX or DDV.
Return Value
A pointer to the OLE control site.
Remarks
Use PrepareEditCtrl instead for edit controls or PrepareCtrl for all other non-OLE controls.
Implementors of custom DDX or DDV routines should call PrepareOleCtrl
for all OLE controls for which they are exchanging data via DDX or validating data via DDV.
For more information on writing your own DDX and DDV routines, see Technical Note 26. For an overview of DDX and DDV, see Dialog Data Exchange and Validation and Dialog Box Topics.
See also
MFC Sample VIEWEX
Hierarchy Chart
CWnd::DoDataExchange
CWnd::UpdateData