Шаг 41 - Инициализация переменной вне класса диалога

Если переменные задействованные в DDX объявлены в классе диалога как публичные.

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

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

Произвести инициализацию их можно и перед вызовом диалога на экран из функции, которая вызывает диалог. Естественно, что если вы пытаетесь присваивать значения в функции OnInitDialog, то она имеет более высокий приоритет (вызывается позже) и перекроет наши данные. Но мы в OnInitDialog ничего делать не будем. Итак, перед вызовом диалога передаем значения.

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

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

41_1.gif (3572 b)

Точно так же можно воспользоваться этими переменными для получения данных из диалога.

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

Вот результат, если ничего не менять в диалоге:

41_2.gif (2444 b)


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