Итак, данные можно инициализировать в конструкторе объекта диалога. Конечно, если элементы управления были связаны с переменными используя 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 }
Запустим и посмотрим:
Отлично данные поместились в диалог. Но вот есть тонкость одна. Сейчас Вы можете открывать и закрывать диалог. Можете менять данные и нажимать О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.