很久没动VC了,笨死了。点击这个按钮後,怎么总是断言错误?void CLogin::OnLogin() 
{ CInternetSession mySession;//建立一个internet 会话
CHttpFile * myHttpFile = NULL;
CString strUserData;
CString strRow;
CString strID; int nSel = m_cmbUserID.GetCurSel();//跟踪了一下,问题就在这里
m_cmbUserID.GetLBText(nSel, strID); if(strID == "" || m_txtPwd == "")
{
AfxMessageBox("用户名、密码不能为空!");
return;
}
}
怎么回事呐?

解决方案 »

  1.   

    判断一下::IsWindow(m_cmbUserID.GetSafeHwnd())
      

  2.   

    ::IsWindow(m_cmbUserID.GetSafeHwnd())
    为真啊
      

  3.   

    DDX_Control(pDX, CMB_ID, m_cmbUserID);
    是一个CONTROL
      

  4.   

    在strcore.cpp文件里断言LPTSTR CString::GetBufferSetLength(int nNewLength)
    {
    ASSERT(nNewLength >= 0); //就是这个,但是怎么导致的啊? GetBuffer(nNewLength);
    GetData()->nDataLength = nNewLength;
    m_pchData[nNewLength] = '\0';
    return m_pchData;
    }
      

  5.   

    呵呵,那是断在了
    m_cmbUserID.GetLBText(nSel, strID);
    上了因为nSel返回值是-1,表示没有选中项,而你却调用GetLBText,所以引起了CString里面的断言