本问题与网络无关。正在写一个程序,udp局域网聊天(无服务器),网络功能已经完成,
还有一点问题:
对于接收udp数据报,我另外启动一个线程,ReceiveMessageAndShow函数(全局函数),
这个时候要将该函数中的字符串传到对话框成员变量中去,
我定义了一个全局变量:CNetBrocastDlg* g_dlg;并在启动线程前已经初始化了,
::_g_dlg=this;//初始化对话框指针
在线程函数中,代码如下:
                char buf[256];
                ……
g_dlg->m_receive_message=*buf;
g_dlg->UpdateData(false);//改为true也不行
注:m_receive_message为编辑框对应成员变量为什么编译过了,而运行时报错呢?代码下载(里面问题描述很详细):
http://tasm.51.net/question/NetBrocast.rar
希望大家能帮帮忙,100分以谢,问题不难,另祝大家新年快乐
(大家回答前希望能调试一下上面的代码,谢谢)

解决方案 »

  1.   

    改成这样
    CString str;
    ASSERT(g_dlg->m_hWnd!=NULL);
    str.Format("%s",&buf);
    (g_dlg->GetDlgItem(IDC_EDIT_RECEIVE))->SetWindowText(str);
    断言可以通过,说明指针是对的
    ASSERT(g_dlg->m_hWnd!=NULL);
    可能UpdateData对线程有限制
      

  2.   

    g_dlg->m_receive_message=*buf是什么意思?
    是希望=buf[0]吗?
      

  3.   

    调试了一下他的代码
    就算是没有g_dlg->m_receive_message=*buf
    也会出错UpdateData断言错误
    所以和这里没什么关系
    最初的断言错误出现在 CHandleMap* pMap = afxMapHWND();
    ASSERT(pMap != NULL);