MFC中IPADDRESS控件的使用

2019-07-13 18:21

void CMyDlg::OnIPAddress() {

// 此段代码:独立的获取本机IP地址和计算机名 WORD wVersionRequested; WSADATA wsaData; char name[255]; CString ip;

PHOSTENT hostinfo;

wVersionRequested = MAKEWORD(2, 0);

if(gethostname(name, sizeof(name)) == 0) {

if((hostinfo = gethostbyname(name)) != NULL) {

ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list); }

if (WSAStartup(wVersionRequested, &wsaData) == 0) {

}

WSACleanup( ); }

// AfxMessageBox(name);//name里是本机名 // AfxMessageBox(ip); //ip中是本机IP

m_IPAddress = ip; // m_IPAddress是IP控件对应的变量,ip是Edit控件对应的变量 // m_IP.SetAddress(255, 86, 255, 68); // 直接设置控件里显示的值 // 本段代码:已知IP Address控件里显示的值,转换为CString格式 /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 unsigned char *pIP; CString strIP; DWORD dwIP;

m_IP.GetAddress(dwIP); // m_IP为IP Address控件对应的变量 pIP = (unsigned char*)&dwIP;

strIP.Format(\ *(pIP+2), *(pIP+1), MessageBox(strIP);*/ /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 BYTE f0, f1, f2, f3;

m_IP.GetAddress(f0, f1, f2, f3); CString m_addr;

m_addr.Format(\MessageBox(m_addr);*/ /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 BYTE IPByte[4];

m_IP.GetAddress(IPByte[0], IPByte[1], IPByte[2], IPByte[3]); CString strIP = \

char temp1[10], temp2[10], temp3[10], temp4[10];

*pIP);

itoa(IPByte[0], temp1, 10); itoa(IPByte[1], temp2, 10); itoa(IPByte[2], temp3, 10); itoa(IPByte[3], temp4, 10); strIP += temp1; strIP += \strIP += temp2; strIP += \strIP += temp3; strIP += \strIP += temp4; MessageBox(strIP);*/ /*

// 下面代码实现:把IP Address控件里的值转化为 CString格式 CString strx;

m_IP.GetWindowText(strx); MessageBox(strx);*/

// 此段代码:用获取的IP地址值,显示到对话框里IP Address控件中 /* CString strIP;

GetDlgItemText(IDC_EDIT_IPAddress, strIP); m_IP.SetWindowText(strIP);*/

m_IP.SetWindowText(ip); // 把IP地址(CString类型)直接显示到IP Address控件中

}

UpdateData(FALSE);

MFC中怎样用 IP Address Control?

CIPAddressCtrl m_IP; CString temp;

在IP Address Control对应的函数中获取IP地址: m_IP.UpdateData();

m_IP.GetWindowTextW(temp); 获得的IP地址存入temp。

二、VC下怎样使用IP Address Control 控件

问题:怎样从IP Address控件获得IP地址,并交给程序(如socket中的connect函数)处理。

方法一:

//m_Ip为IP Address控件的变量名

m_Ip.GetAddress(IPByte[0],IPByte[1],IPByte[2],IPByte[3]); 获得IP Address控件中的4部分数字

//------------------把IP地址转化为字符 CString strI;=\

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);

strIp+=temp1; strIp+=\ strIp+=temp2; strIp+=\ strIp+=temp3; strIp+=\ strIp+=temp4;

itoa函数介绍

定义在stdlib中的 , _CRTIMP char * __cdecl _itoa(int, char *, int); 我看的源代码中是这么调用的: _itoa(i,str3,10);

功能:把整形转换为字符类型, 含义: i:需要转换的整形 str3:字符串缓冲区 10:十进制方式 方法二(简单):

m_IP.GetAddress(f0,f1,f2,f3);//m_IP是ip控件的控制变量 m_addr.Format(\ 使用VC提供的Format函数,省去了整数转化为字符串的操作。

三、VC中IP地址控件的赋值与取值

CIPAddressCtrl m_ipTarget; // 假设你的IP控件为m_ipTarget CString m_szIPAddress;

// 取值到m_szIPAddress

BYTE nField0 = 0, nField1 = 0, nField2 = 0, nField3 = 0; if(!m_ipTarget.IsBlank()) {

m_ipTarget.GetAddress(nField0, nField1, nField2, nField3); }

m_szIPAddress.Format(_T(\

// 赋值给m_ipTarget

int nField0 = 0, nField1 = 0, nField2 = 0, nField3 = 0;

if(_stscanf(m_szIPAddress, _T(\{

m_ipTarget.SetAddress(nField0, nField1, nField2, nField3); }

同样也可以这样:

// 取值到m_szIPAddress BYTE b[4];

((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->GetAddress(b[0],b[1],b[2],b[3]); m_szIPAddress.Format(\ // 赋值给m_ipTarget //地址初始化


MFC中IPADDRESS控件的使用.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:YH-B5601电动机保护技术说明书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: