关于网友提出的“ IP Address控件问题”问题疑问,本网通过在网上对“ IP Address控件问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: IP Address控件问题描述:
为了让用户输入一个合法的IP地址,我在程序中使用了CIPAddressCtrl,也就是IP地址空间。可是无法将输入的IP转换成相应的字符串。代码如下
unsigned char *pIP;
CString strIP;
DWORD dwIP;
dlg.m_IPText.GetAddress(dwIP);
pIP = (unsigned char*)&dwIP;
strIP.Format("%u.%u.%u.%u",*(pIP+3), *(pIP+2), *(pIP+1), *pIP);
奇怪的是我改变输入的IP地址 用AfxMessageBox()输出的字符串strIP一直不变。哪位高手能解释下,或给出这个控件的详细使用方法。
说明下我用的是VC6.0中的那个IP地址空间。
解决方案1:
1. 楼主的用法不对。
dlg.m_IPText.GetAddress(dwIP);不是在
CSetupDlg dlg;//得到IP地址的对话框
if(dlg.DoModal()==IDOK)
这两行的下面,而应该是在CSetupDlg中。当你DoModal()返回之后,你的m_IPText控件已经销毁,你就无法再用这个控件去获取其中的文本了。另外,楼主需要说明m_IPText是一个啥玩意儿,要不,大伙没办法帮助你,你要把问题说清楚,大伙才好帮助
2. 控件用的不对。
m_IPText.GetAddress(dwIP);显然是有问题的,你要改成:
m_IPText.GetWindowText(strIP);
AfxMessageBox( strIP );
unsigned char *pIP;
CString strIP;
DWORD dwIP;
dlg.m_IPText.GetAddress(dwIP);
pIP = (unsigned char*)&dwIP;
strIP.Format("%u.%u.%u.%u",*(pIP+3), *(pIP+2), *(pIP+1), *pIP);
把这段代码放到CSetupDlg的OnOK里
把strIP声明成成员变量
然后在现在的位置
AfxMessageBox(dlg.strIP);