用VC6.0编写一个聊天室程序,编译通过,但在链接时,用CIPAddressCtrl控件来获取IP时出现一个错误。
BYTE f0,f1,f2,f3;
m_IP.GetAddress(f0,f1,f2,f3);  //m_IP是CIPAddressCtrl的对象
当调用GetAddress函数时出现了CXX0069错误,“this cxx0069,error:variable needs stack frame”如图!

解决方案 »

  1.   

    因为图片没有上传成功,再说明一下:
    void CTalkDlg::OnConnect()
    {
    BYTE f0,f1,f2,f3;
    m_IP.GetAddress(f0,f1,f2,f3);  //调用GetAddress函数,转到下面的函数运行。
    CString add;
    add.Format("%d,%d,%d,%d",f0,f1,f2,f3); if(m_client.InitAndConnet(m_hWnd,m_uPort,add)==FALSE)
    return;

    }int CIPAddressCtrl::GetAddress(BYTE& nField0, BYTE& nField1, BYTE& nField2, BYTE& nField3) 
    //运行到此在witch窗口中出现this cxx0069,error:variable needs stack frame”
    {
    ASSERT(::IsWindow(m_hWnd));
    DWORD dwAddress;
    LRESULT nRetVal = ::SendMessage(m_hWnd, IPM_GETADDRESS, 0, (LPARAM) &dwAddress); nField0 = (BYTE) FIRST_IPADDRESS(dwAddress);
    nField1 = (BYTE) SECOND_IPADDRESS(dwAddress);
    nField2 = (BYTE) THIRD_IPADDRESS(dwAddress);
    nField3 = (BYTE) FOURTH_IPADDRESS(dwAddress); return nRetVal;
    }     
      

  2.   

    表达式计算器错误 CXX0069变量需要堆栈帧表达式计算器无法计算变量,因为它不出现在堆栈帧中。这可能是由作为内联函数一部分声明的变量引起的。
      

  3.   

    我在程序中没有用到内联函数。问题就是m_IP对象的this指针没有成功的隐含传递到GetAddress函数!怀疑是m_IP对象没有初始化,但是检查后没有这个问题!所以不知从哪里下手了,还望高手们解惑啊!