Шаг 52 - Связь с несколькими переменными в обход ClassWizard

Мы посмотрели, что ClassWizard запрещает нам связывать элемент с несколькими переменными. Но мы попробуем его обойти. Делаем первую связь. И копируем в блокнот – описание переменной, DDX макрос, инициализацию переменной.

52_1.gif (9638 b)

А вот теперь ее удаляем и делаем связь с числом используя ClassWizard:

52_2.gif (7372 b)

И начинаем все прописывать из блокнота. Переменную.

class CTest5Dlg : public CDialog
{
// Construction
public:
	CTest5Dlg(CWnd* pParent = NULL);	// standard constructor

	CString	m_Ed1;

	// Dialog Data
	//{{AFX_DATA(CTest5Dlg)
	enum { IDD = IDD_TEST5_DIALOG };
	CEdit	m_EdCtrl2;
	CEdit	m_EdCtr1;
	CString	m_Ed2;
	int	m_Ed1Int;
	//}}AFX_DATA
.......
};

DDX макрос

void CTest5Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTest5Dlg)
	DDX_Control(pDX, IDC_EDIT2, m_EdCtrl2);
	DDX_Control(pDX, IDC_EDIT1, m_EdCtr1);
	DDX_Text(pDX, IDC_EDIT2, m_Ed2);
	DDX_Text(pDX, IDC_EDIT1, m_Ed1Int);
	//}}AFX_DATA_MAP
	DDX_Text(pDX, IDC_EDIT1, m_Ed1);
}

Начальную инициализацию в конструкторе:

CTest5Dlg::CTest5Dlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTest5Dlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTest5Dlg)
	m_Ed2 = _T("");
	m_Ed1Int = 0;
	//}}AFX_DATA_INIT
	.....
	m_Ed1 = _T("");
}

А вот теперь аккуратнее, если Вы в OnInitDialog() делали что-то:

BOOL CTest5Dlg::OnInitDialog()
{
	m_Ed1 = "123";
	m_Ed2 ="Word";
	CDialog::OnInitDialog();
....
}

Собираем проект. Проблем никаких нет, даже запускается.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 29.06.2002