MFC 注销主对话框, 回到登陆框的功能实现

MFC 注销主对话框, 返回登陆框的功能实现。
init的时候 ,插入登陆对话框

CEPLApp *m_dlgApp;

BOOL CEPLApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
m_dlgApp=this;
        ...
CLogin  loginDlg;
if(loginDlg.DoModal() != IDOK) 
{
//theApp.ExitInstance();
return FALSE;
}
loginDlg.DestroyWindow();

AfxEnableControlContainer();

SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
....
return FALSE;
}

注销主对话框。同时返回登陆框

extern  CEPLApp *m_dlgApp;
...
void CEPLDlg::OnDestroy()
{
CDialog::OnDestroy();
m_dlgApp->InitInstance();
// TODO: 在此处添加消息处理程序代码
}


现在登陆之后,验证登陆成功到主界面。点击X关闭,返回到登陆框,再次验证的时候,断言错误。单步调试是登陆框验证完了,红色哪行运行的时候崩的,是什么原因啊、?

------解决方案--------------------
对话框定义在外面,最好做成全局的...放在函数里面,函数执行完了就释放了...
------解决方案--------------------
INT_PTR nResponse;

while(TRUE)
{
CLogin LoginDlg; //登录对话框
nResponse = LoginDlg.DoModal();
if(IDOK == nResult)
{
CEPLDlg EPLDlg; //界面对话框
EPLDlg.DoModal();
}
else
{
break;
}
}

return FALSE;


自己写的,在InitInstance函数中加入如上代码
------解决方案--------------------
大姐,InitInstance()是虚函数,你在调用这个函数的时候,系统会自动执行相关联的初始化函数,所以把你的登陆窗口换个函数
------解决方案--------------------
BOOL CEPLApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
m_dlgApp=this;

INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);