Шаг 39 - Инициализация переменных в конструкторе

Итак, данные можно инициализировать в конструкторе объекта диалога. Конечно, если элементы управления были связаны с переменными используя DDX. Есть диалог с двумя элементами редактирования и есть пункт меню, который вызывает этот диалог.

void CTest6Doc::OnTestTest() 
{
	CMyDialog cm;
	cm.DoModal(); 
}

Мы с Вами проведем начальную инициализация в конструкторе диалога:

CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CMyDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMyDialog)
	m_Ed1 = _T("Hello");
	m_Ed2 = _T("Word");
	//}}AFX_DATA_INIT
}

Запустим и посмотрим:

39_1.gif (3563 b)

Отлично данные поместились в диалог. Но вот есть тонкость одна. Сейчас Вы можете открывать и закрывать диалог. Можете менять данные и нажимать ОK. При запуске данные будут всегда новые, так как каждый раз объект диалога создается заново. А вот если есть объект в описании класса документа:

class CTest6Doc : public CDocument
{
protected: // create from serialization only
	CTest6Doc();
	DECLARE_DYNCREATE(CTest6Doc)

// Attributes
public:
	CMyDialog cm;
// Operations
public:
........
}

void CTest6Doc::OnTestTest() 
{
	cm.DoModal(); 
}

То теперь данные будут сохраняться после нажатия на кнопку OK.


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