我是给 edit控件加了一个CString类型的变量:IDC_EDIT_IP   CString   m_edit_ip
在线程里 addrSrv.sin_addr.S_un.S_addr=inet_addr(pDlg->m_edit_ip);
报错:error C2664: 'inet_addr' : cannot convert parameter 1 from 'class CString' to 'const char *'要是换成 addrSrv.sin_addr.S_un.S_addr=inet_addr(pDlg->m_edit_ip.LockBuffer());
报错:error C2664: 'inet_addr' : cannot convert parameter 1 from 'unsigned short *' to 'const char *'

解决方案 »

  1.   

    #include<AtlBase.h>USES_CONVERSION;addrSrv.sin_addr.S_un.S_addr=inet_addr(T2A(pDlg->m_edit_ip));
      

  2.   

    addrSrv.sin_addr.S_un.S_addr=(char*)inet_addr(pDlg->m_edit_ip.LockBuffer());
      

  3.   

    将CString转成char*CString str = _T("...");
    char buf[...] = {0};
    #ifdef UNICODE
    WideCharToMultiByte(CP_ACP, ...);
    #else
    sprintf(buf, "%s", str);
    #endif
      

  4.   

    addrSrv.sin_addr.S_un.S_addr=inet_addr((LPSTR)(LPCTSTR)pDlg->m_edit_ip);
      

  5.   

    char temp[32]={0};
    WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,m_edit_ip,-1,temp,32,NULL,NULL);
    联不上啊
      

  6.   

    报错:error C2664: 'inet_addr' : cannot convert parameter 1 from 'unsigned short *' to 'const char *'
      

  7.   

    addrSrv.sin_addr.S_un.S_addr=inet_addr(CW2A(pDlg->m_edit_ip));
      

  8.   

    连不上啊  难道是我m_edit_ip错了
      

  9.   


    断点  m_edit_ip没错
      

  10.   

    不行啊 报错 未定义 cw2a
    这个宏怎么定义?
      

  11.   

    addrSrv.sin_addr.S_un.S_addr=inet_addr((char*)(_bstr_t)pDlg->m_edit_ip);
      

  12.   

    直接强制转换不就可以了,在不行就getwindowtexta,有什么麻烦的