Если переменные задействованные в 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();
}
Запускаем и смотрим:

Точно так же можно воспользоваться этими переменными для получения данных из диалога.
void CTest6Doc::OnTestTest()
{
cm.m_Ed1= "Test";
cm.m_Ed2 = "extern";
cm.DoModal();
AfxMessageBox(cm.m_Ed1 + " " + cm.m_Ed2);
}
Вот результат, если ничего не менять в диалоге:
