UINT ThreadFunc(LPVOID lpParam)
{
sprintf(url,"%s//ElereadingManager?cmdACT=ereadingLogin&action=login&loginid=%s",pStrUrl,user); GetResponse(url,xml);
// 验证完毕,关闭对话框
delete m_pShowDlg;
// 无返回信息,表示http请求失败
if (xml == "")
{
MessageBox(m_hWndCopy,_T("号码验证失败,无法连接到主机!"),_T("错误"),MB_ICONERROR);
}
return 0;
}void CLockScreenDlg::OnBnClickedButtonLogin()
{
// 显示正在登录的提示
m_pShowDlg=new CShowLogining();
m_pShowDlg->Create(IDD_DIALOG_ShowLogining,this);
m_pShowDlg->CenterWindow();
m_pShowDlg->ShowWindow(SW_SHOW); // 启动线程,进行数据库连接
AfxBeginThread(ThreadFunc,&m_strUser);
}delete m_pShowDlg;
放在new出来的后面正常,但是放在messagebox的前面,程序运行就会报错,这个messagebox到底干什么了?  求指教

解决方案 »

  1.   

    delete m_pShowDlg;
    执行这个以后对话框不存在了,句柄也不存在了
    下面这句MessageBox(m_hWndCopy,_T("号码验证失败,无法连接到主机!"),_T("错误"),MB_ICONERROR);
     肯定就出错了,因为m_hWndCopy不存在了吧还有你为什么要在主线程里new,却跑到 另一个线程去delete
      

  2.   

    这个做法确实是不好的,但不明白为什么会引起中断。
    另外,messagebox里面是另外一个对话框的句柄