MFC中IP控件的使用
void CMFC_IPControlDlg::OnIPAddressCtrl()
{
/*获取计算机名和本机IP地址*/
WORD wVersionRequested;
WSADATA wsaData;
char name[255];//本机名
CString ip;//本机IP
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &wsaData) == 0)
{
if (gethostname(name, sizeof(name)) == 0)
{
if ((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
}
}
WSACleanup();
}
/*获取计算机名和本机IP地址*/
//直接设置控件里显示的值
m_IPAddress.SetAddress(192, 168, 1, 2);
/*把IP Address控件里显示的值,转换为CString格式*/
//方法1
unsigned char *pIP;
CString strIP;
DWORD dwIP;
m_IPAddress.GetAddress(dwIP); // m_IPAddress为IP Address控件对应的变量
pIP = (unsigned char*)&dwIP;
strIP.Format("%u.%u.%u.%u",*(pIP+3), *(pIP+2), *(pIP+1), *pIP);
MessageBox(strIP);
//方法2
BYTE f0, f1, f2, f3;
m_IPAddress.GetAddress(f0, f1, f2, f3);
CString m_addr;
m_addr.Format("%d%s%d%s%d%s%d", f0, ".", f1, ".", f2, ".", f3);
MessageBox(m_addr);
//方法3
BYTE IPByte[4];
m_IPAddress.GetAddress(IPByte[0], IPByte[1], IPByte[2], IPByte[3]);
CString strIP2 = "";
char temp1[10], temp2[10], temp3[10], temp4[10];
_itoa(IPByte[0], temp1, 10);
_itoa(IPByte[1], temp2, 10);
_itoa(IPByte[2], temp3, 10);
_itoa(IPByte[3], temp4, 10);
strIP2 += temp1;
strIP2 += ".";
strIP2 += temp2;
strIP2 += ".";
strIP2 += temp3;
strIP2 += ".";
strIP2 += temp4;
MessageBox(strIP2);
m_IPAddress.SetAddress(atoi(temp1), atoi(temp2), atoi(temp3), atoi(temp4));//直接设置控件里显示的值
//方法4
CString strx;
m_IPAddress.GetWindowText(strx);
MessageBox(strx);
/*把IP Address控件里的值转化为 CString格式*/
/*用获取的IP地址值,显示到IP Address控件中*/
CString strIP3;
GetDlgItemText(IDC_IPADDRESS1, strIP3);
m_IPAddress.SetWindowText(strIP3);// 把IP地址(CString类型)直接显示到IP Address控件中
UpdateData(FALSE);
}