MFC中有一种专门用来输入IP地址的控件,它的具体样子就像这样:
他可以控制用户输入的数字的范围和种类.
具体的实现代码:
void CMyDlg::OnIPAddress()
02.{
03. // 此段代码:独立的获取本机IP地址和计算机名
04. WORD wVersionRequested;
05. WSADATA wsaData;
06. char name[255];
07. CString ip;
08. PHOSTENT hostinfo;
09. wVersionRequested = MAKEWORD(2, 0);
10.
11. if (WSAStartup(wVersionRequested, &wsaData) == 0)
12. {
13.
14. if(gethostname(name, sizeof(name)) == 0)
15. {
16. if((hostinfo = gethostbyname(name)) != NULL)
17. {
18. ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
19. }
20. }
21. WSACleanup( );
22. }
23.
24. // AfxMessageBox(name);//name里是本机名
25. // AfxMessageBox(ip); //ip中是本机IP
26. m_IPAddress = ip; // m_IPAddress是IP控件对应的变量,ip是Edit控件对应的变量
27. // m_IP.SetAddress(255, 86, 255, 68); // 直接设置控件里显示的值
28. // 本段代码:已知IP Address控件里显示的值,转换为CString格式
29. /*
30. // 下面代码实现:把IP Address控件里的值转化为 CString格式
31. unsigned char *pIP;
32. CString strIP;
33. DWORD dwIP;
34. m_IP.GetAddress(dwIP); // m_IP为IP Address控件对应的变量
35. pIP = (unsigned char*)&dwIP;
36. strIP.Format("%u.%u.%u.%u",*(pIP+3), *(pIP+2), *(pIP+1), *pIP);
37. MessageBox(strIP);*/
38. /*
39. // 下面代码实现:把IP Address控件里的值转化为 CString格式
40. BYTE f0, f1, f2, f3;
41. m_IP.GetAddress(f0, f1, f2, f3);
42. CString m_addr;
43. m_addr.Format("%d%s%d%s%d%s%d", f0, ".", f1, ".", f2, ".", f3);
44. MessageBox(m_addr);*/
45. /*
46. // 下面代码实现:把IP Address控件里的值转化为 CString格式
47. BYTE IPByte[4];
48. m_IP.GetAddress(IPByte[0], IPByte[1], IPByte[2], IPByte[3]);
49. CString strIP = "";
50. char temp1[10], temp2[10], temp3[10], temp4[10];
51. itoa(IPByte[0], temp1, 10);
52. itoa(IPByte[1], temp2, 10);
53. itoa(IPByte[2], temp3, 10);
54. itoa(IPByte[3], temp4, 10);
55. strIP += temp1;
56. strIP += ".";
57. strIP += temp2;
58. strIP += ".";
59. strIP += temp3;
60. strIP += ".";
61. strIP += temp4;
62. MessageBox(strIP);*/
63. /*
64. // 下面代码实现:把IP Address控件里的值转化为 CString格式
65. CString strx;
66. m_IP.GetWindowText(strx);
67. MessageBox(strx);*/
68. // 此段代码:用获取的IP地址值,显示到对话框里IP Address控件中
69. /* CString strIP;
70. GetDlgItemText(IDC_EDIT_IPAddress, strIP);
71. m_IP.SetWindowText(strIP);*/
72. m_IP.SetWindowText(ip); // 把IP地址(CString类型)直接显示到IP Address控件中
73.
74. UpdateData(FALSE);
75.}