19
: Cedit. CListBox
1. CEdit
2. DDX
3. CListBox
4.
5.
CEdit
(edit control), CEdit, , . , . , , , (MLE multiline edit) , , . , . , . , .
CEdit 60 . CEdit ' , ' 60 , CRichEditCtrl.
DDX
" DDX " DDX 䳿 . , DDX - . , , , DDX.
, () , ', Add Variable ( ). Add Member Variable Wizard, . Control variable (, ), DDX (DDX control variable), DDX (DDX value variable). , , . , -, . Visual Studio, , CString , : CString. ' , m_strTo, Finish ().
|
|
, . ³ editdlg.h - m__strTo. , - (public):
public: CString m_strTo;
editdlg.c CEditDlg. - (initializer list) :
CEditDlg::CEclitDlg (CWnd* pParent/*=NULL*/):CDialog(CEditDlg::IDD
pParent), m strTo(L"")
{
}
, . DoDataExchange. , DDX, UpdateData, , , , 䳿 . , DoDataExchange, UpdateData, DDX.
DoDataExchange. DDX_Control, , DDX_Text:
void CEditDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC EDIT1, m strTo);
}
ϳ , , , - . , DDX_Text 37 ! , byte, short, int CString. , COleCurrency COleDataTime.
DDX_Text, , PrepareEditCtrl m_bSaveAndValidate TRUE, ( SDK. Win32 GetWindowText) . m_bSaveAndValidate FALSE, : , .
MFC Win32::SetWindowText AfxSetWindowText. г , AfxSetWindowText , . , , , . , MFC .
void AFXAPI DDX_Text(CDataExchange* pDX, int nIDC, CStringi value)
{
HWND hWndCtrl = pDX->PrepareEditCtrl (nIDC);
if (pDX->m_bSaveAndValidate) {
int nLen =::GetWindowTextLength(hWndCtrl);
::GetWindowText(hWndCtrl,value.GetBufferSetLength(nLen),nLen+1);
value.ReleaseBuffer ();
}
else { AfxSetWindowText(hWndCtrl, value); }
}
; " CDataExchange: m_bSaveAndValidate?" UpdateData. UpdateData , bSaveAndValidate, : (bSaveAndValidate = FALSE) , (bSaveAndValidate = TRUE).
|
|
, DDX .
- , . OnlnitDialog , , , UpdateData (FALSE).
- - , UpdateData(TRUE).
- 䳿 CDialog::OnOK UpdateData (TRUE). , , , DoModal, .