码农的我,今天做了个小工具,主要是启动第三方软件,然后根据启动软件的标题来做出对应的处理的功能。
当然,也用到了CIPAddressCtrl这个控件。
对此控件,不胜了解,所以查了一些资料,供我和大家一起学习。。。
CIPAddressCtrl m_addr;
获取IP地址:
DWORD dwValue ;
m_addr.GetAddress(dwValue); //大家都知道。。嘿嘿
当是如何把dwValue转换成常规的xxx.xxx.xxx.xxx字符串地址呢?
方法一:
m_addr.GetWindowsText().... // 这样可以直接获取IP地址
方法二:
unsigned char* pip;
pip = (unsigned char*)&dwValue;
strAddr.Format("%u.%u.%u.%u", *(pip+3), *(pip+2), *(pip+1), *pip);
设置IP地址:
m_addr.SetAddress(dwValue);
当我们拿到的是一个字符串时,如xxx.xxx.xxx.xxx
可以用 dwValue = inet_addr(strip);
看到这,如果想知道为什么strAddr.Format("%u.%u.%u.%u", *(pip+3), *(pip+2), *(pip+1), *pip);成立的话,我们在一起深入探讨探讨。。。
首先,我们大家都知道IP最大的为:255.255.255.255 好吧。
255 = 2的8次方-1 即:8个比特(bit),1字节, IP总共有4个字节;
而DWORD 就是 Double Word的意思,每个word为2个字节的长度, 所有DWORD=4字节。
所有 IP长度=DWORD长度,每个字节表示一个255
如下图: