我用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指针呢?