Последнее, с чем я имел дело, было в VS-2008, но если память обслуживает, объект CDialog, вероятно, размещается в стеке в CProjectNameApp :: InitInstance (). Там, вероятно, есть код, который выглядит примерно так:
CProjectNameDlg dlg;
int nResponse = dlg.DoModal();
Одна вещь, которую вы можете сделать, это добавить указатель на диалоговое окно в качестве члена класса ProgramNameApp. Поэтому в ProgramNameApp.h добавьте элемент данных, например:
std::tr1::unique_ptr<CProjectNameDlg> m_pDlg;
Затем измените код в CProjectNameApp :: InitInstance () на:
m_pDlg = std::tr1::unique_ptr<CProjectNameDlg>(new CProjectNameDlg());
int nResponse = m_pDlg->DoModal();
Естественно, вы должны быть в поисках любых других вариантов использования dlg
и соответственно изменить их.