MFC 注销主对话框, 回到登陆框的功能实现
MFC 注销主对话框, 返回登陆框的功能实现。
init的时候 ,插入登陆对话框
注销主对话框。同时返回登陆框
现在登陆之后,验证登陆成功到主界面。点击X关闭,返回到登陆框,再次验证的时候,断言错误。单步调试是登陆框验证完了,红色哪行运行的时候崩的,是什么原因啊、?
------解决方案--------------------
对话框定义在外面,最好做成全局的...放在函数里面,函数执行完了就释放了...
------解决方案--------------------
自己写的,在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);
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);