我在做一个在网卡上抓IP包的程序,其中用到WINPCAP里面的函数等东西,我做一个对话框,其中点击OnBUTTONCapture键就开始在一个EDIT框里逐行显示包的信息,包括时间长度等,有个范例在回调函数里有个printf("%s,%.6d len:%d,tolal number:%ld \n", timestr, header->ts.tv_usec, header->len,Number++)函数,我想在对话框里实现,我先在OnBUTTONCapture类里用变量m_strCapture=m_strCapture+"X",也就是把回调函数里的时间,抓包的个数等变量在EDIT框里输出,并且能实现逐行实时输出。其中X是回调函数里的变量,显然不行,因为变量的作用域只是函数体内起作用。我想在回调函数里实现功能,但是回调函数访问不到m_strCapture这个变量,这个变量是string型的。请问怎么才能实现这个功能呢?急!!!!

解决方案 »

  1.   

    1、m_strCapture变成一个全局变量
    2、可以发送自定义消息,传X的地址给窗口
      

  2.   

    问题是这个变量是EDIT框的,我在classwizard里面定义的,但位置是定死的,改了就报错了,我现在在准备在外面定义一个全局变量,回调函数里用个全局变量传值,但估计函数还会有错误,即使通过了,用m_strCapture=m_strCapture+"X"肯定也有问题,因为没法换行,还有啊,sting格式有没有长度限制啊?
      

  3.   

    m_CapturePacket=m_CapturePacket+str3+"  "+str1+"   "+str2+"\r";
    m_CapturePacket=m_CapturePacket+str3+"  "+str1+"   "+str2+"\n";
    这样的写法根本就没法换行,是不是有其他的写法?
      

  4.   

    并且我把m_CapturePacket改成全局变量后,显示错误:error LNK2005: "class CString m_CapturePacket" (?m_CapturePacket@@3VCString@@A) already defined in wipcap2.obj
    fatal error LNK1169: one or more multiply defined symbols found
      

  5.   

    LongLongAgoImBoy(ThereIsAMe) 兄弟所说的第二种锁变量的方法,我觉得实时性不是很好吧,两个进程同时争这个锁,总会有时间上的差。第一种方法我觉得思路可以的,但是怎么具体的操作希望能再细致一点