|
你好!小弟看了VC++高级班之网络编程编,遇到问题请高手指教一下。
我按照syc的思路做了程序(几乎一模一样)。
遇到的问题是客户端程序问题。客户端程序如附件。
执行程序,程序运行到这里出问题了。
CLoginDlg loginDlg;
OutputDebugString(_T("00000000"));
INT_PTR dlgRet = loginDlg.DoModal();
OutputDebugString(_T("sssssssss"));
if (dlgRet == IDCANCEL)
{
return FALSE;
}
OutputDebugString(_T("11111111"));
用debugview的结果如下:
图1
图2是崩溃画面。
我现在有两个问题。
1.在客户端执行到程序EndDialog(IDOK);后为什么会崩溃,出现图2的画面。
程序为:
LRESULT CLoginDlg::OnNotifyMsg(WPARAM wParam, LPARAM lParam)
{
UINT nmsg = wParam;
switch (nmsg)
{
case MSG_CONNECT:
{
BOOL bResult = (BOOL)lParam;
if (bResult == FALSE)
{
MessageBox(_T("连接服务器失败,请重试!"), _T("提示"), MB_OK);
GetDlgItem(IDC_IPADDRESS_IP)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_PORT)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_USER)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_PWD)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(TRUE);
SetWindowText(_T("登陆验证"));
return FALSE;
}
}
break;
case MSG_LOGIN:
{
BOOL bResult = (BOOL)lParam;
if (bResult == FALSE)
{
MessageBox(_T("登陆失败,请检查用户名和密码!"), _T("提示"), MB_OK);
GetDlgItem(IDC_IPADDRESS_IP)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_PORT)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_USER)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_PWD)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(TRUE);
SetWindowText(_T("登陆验证"));
return FALSE;
}
else
{
EndDialog(IDOK);
}
}
break;
default:
break;
}
return TRUE;
}
第二:程序中CClient对象是在CLoginDlg建立的,并且是他的成员,CLoginDlg 对象都EndDialog了,还能使用吗?不销毁么?
UINT CLoginDlg::ConnectThreadProc(LPVOID pParam)
{
CLoginDlg *pThis = (CLoginDlg *)pParam;
UINT nPort = 0;
CString strIp, strUser, strPassword;
nPort = pThis->GetDlgItemInt(IDC_EDIT_PORT);
pThis->GetDlgItemText(IDC_IPADDRESS_IP, strIp);
pThis->GetDlgItemText(IDC_EDIT_USER, strUser);
pThis->GetDlgItemText(IDC_EDIT_PWD, strPassword);
pThis->m_MsgClient = new CClient();
pThis->m_MsgClient->SetTargetCallback(pThis->GetSafeHwnd());
pThis->m_MsgClient->ConnectToServer(strIp, nPort, strUser, strPassword);
return TRUE;
}
|
上一篇: CDC画线资源释放问题下一篇: 打开cmd模拟输入telnet失败
|