Шаг 43 - Что делать с классами элементов управления

В прошлом шаге мы посмотрели, что если класс это элемент управления, то производить внешнюю инициализацию не всегда корректно. Тут выход простой. Завести переменную. Дополнительную.

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

	// Dialog Data
	//{{AFX_DATA(CMyDialog)
	enum { IDD = IDD_DIALOG1 };
	CEdit	m_Ed1;
	CString	m_Ed2;
	//}}AFX_DATA
	CString m_Ed1_str;

	// Overrides
	....
};

Инициализировать ее:

void CTest6Doc::OnTestTest() 
{
	cm.m_Ed1_str ="Test";
	cm.m_Ed2 = "extern";
	cm.DoModal(); 
}

А вот в OnInitDialog() производить инициализацию:

BOOL CMyDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_Ed1.SetWindowText(m_Ed1_str); 
	// TODO: Add extra initialization here
	return TRUE;	// return TRUE unless you set the focus to a control
			// EXCEPTION: OCX Property Pages should return FALSE>
}

Но уже после вызова OnInitDialog(), чтобы элементы были созданы. Но на этом неприятности не закончились. Вы не сможете получить данные назад, так как элемент управления будет разрушен.


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