我写了一个activex控件,里面有一个data变量,CString类型,用于保存发来的数据,现在用VB语句text1.text=kk.data(kk是控件名),可以显示数据。但在网页里调用,得到的却是空的,调用其余的几个方法都没问题,并且数据确实已经发过来了,怎么回事呢?

解决方案 »

  1.   

    传输应该没有问题,因为用VB可以读取出来,并且我用AfxMessageBox可以将收到的数据显示出来,不是空值。
      

  2.   

    activex的代码:         case FD_READ://有新数据到达
             {
    //AfxMessageBox("收到数据");
            int ret=recv(sockethandle,data,50000,0);
    if(ret>0)
    {
    //AfxMessageBox("收到数据");
    data[ret]=NULL;//清空数据
    m_data+=data;
    FireDataArrive();//数据到达事件,用来测试vb
    //m_data="";
    AfxMessageBox(m_data);//显示数据,用来测试网页加载控件的情况下,控件是否接收到数据
                      }
             }FireDataArrive();//数据到达事件,用来测试vb这个事件在vb中这样调用:Private Sub Command3_Click()kk.ConnectIt
    kk.FileName = "kk.txt"
    kk.GetText
    While kk.Data = ""
    Text1.Text = kk.Data
    Wend
    Text1.Text = kk.DataEnd SubPrivate Sub kk_DataArrive()'在这里通知vb,kk是控件名
    'Text1.Text = kk.Data
    End Sub这样的话,vb的text1控件可以显示文本下面是问题:
    vb中这样用:
    Private Sub Command3_Click()
    kk.ConnectIt
    kk.FileName = "kk.txt"
    kk.GetText
    Text1.Text = kk.Data'在这个执行之前,AfxMessageBox(m_data)已经将内容显示出来了。
    End Sub
    得到的是空值。在网页中调用:
    <OBJECT id="kk" align="center" WIDTH=0 HEIGHT=0 codeBase="Package.ocx#version=1,0,0,1" classid="CLSID:3B6F7456-D129-4B7D-A414-D563BA338873">
    </OBJECT>
    <BODY>
    <script language="javascript">
    function doTest()
    {
       if(kk.ConnectIt)
       {   kk.filename="kk.txt";
       kk.GetText();
       alert(kk.data);
       }  
    }
    </BODY onload=doTest()>
    <input type="button" value="点击试试" id="btnOK" onclick="doTest();"><BODY>
    </BODY>
    对话框显示也是空值。怎么回事呢?