请教:为什么UpdateData老是出错?
我用VC++6.0编写一个对话框程序, 用于即时通信.
我开了一个线程专门接收消息.然后送到对话框上的CEdit控件显示出来.
我为CEdit控件关联了一个变量m_EditRecv, 然后这样:
...
CMyDlg *g_pMyDlg;
...
BOOL CMyDlg::OnInitDialog()
{
...
g_pQQdlg = this;
...
_beginthread(RecvThread, 0,NULL);
...
}
并且增加了一个public函数:
int CMyDlg::AddMsg(char *msg)
{
UpdateData();
m_EditRecv.Insert(m_EditRecv.GetLength(), msg);
UpdateData(FALSE); // 就在这里死机的!!!!!!!!!!!!
return 0;
}
在RecvThread中收到消息就调用g_pMyDlg->AddMsg(RecvBuf):
void RecvThread(void* dummy)
{
...
recvfrom(s, recvBuf, ...);
...
g_pQQdlg->AddMsg(recvBuf);
...
}
运行的时候就发现在UpdateData(FALSE);那里死机了!
出现有这样内容的对话框:
Debug Assertion Failed!
Program: ...My.EXE
File:wincore.cpp
Line:879
....
请问高手,是不是线程间传指针导致的问题? 是否要用FAR指针呢?