在一个edit控件中得到ip地址 在线程中使用 如何搞
在一个edit控件中得到ip地址 在线程中使用 怎么搞?
我是给 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 *'
------解决方案--------------------
#include<AtlBase.h>
USES_CONVERSION;
addrSrv.sin_addr.S_un.S_addr=inet_addr(T2A(pDlg->m_edit_ip));
------解决方案--------------------
addrSrv.sin_addr.S_un.S_addr=(char*)inet_addr(pDlg->m_edit_ip.LockBuffer());
------解决方案--------------------
将CString转成char*
我是给 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 *'
------解决方案--------------------
#include<AtlBase.h>
USES_CONVERSION;
addrSrv.sin_addr.S_un.S_addr=inet_addr(T2A(pDlg->m_edit_ip));
------解决方案--------------------
addrSrv.sin_addr.S_un.S_addr=(char*)inet_addr(pDlg->m_edit_ip.LockBuffer());
------解决方案--------------------
将CString转成char*
- C/C++ code
CString str = _T("..."); char buf[...] = {0}; #ifdef UNICODE WideCharToMultiByte(CP_ACP, ...); #else sprintf(buf, "%s", str); #endif
------解决方案--------------------
addrSrv.sin_addr.S_un.S_addr=inet_addr((LPSTR)(LPCTSTR)pDlg->m_edit_ip);
------解决方案--------------------
addrSrv.sin_addr.S_un.S_addr=inet_addr(CW2A(pDlg->m_edit_ip));
------解决方案--------------------
addrSrv.sin_addr.S_un.S_addr=inet_addr((char*)(_bstr_t)pDlg->m_edit_ip);