IP Address控件问题

dongdong814617937 2009-12-14 09:49:47
为了让用户输入一个合法的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地址空间。
...全文
151 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lclyb 2009-12-15
  • 打赏
  • 举报
回复
学习下!
lidongquan20090203 2009-12-15
  • 打赏
  • 举报
回复
CSetupDlg dlg;//得到IP地址的对话框
if(dlg.DoModal()==IDOK)
{
CString strIP; //m_IPText应该是定义的IP地址变量吧
dlg.m_IPText.GetWindowText(strIP);
AfxMessageBox(strIP);
}
red-fly 2009-12-15
  • 打赏
  • 举报
回复
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 );
wwgddx 2009-12-15
  • 打赏
  • 举报
回复
UpdateData(FALSE);//应该放在获得IP地址前面

[Quote=引用 3 楼 dongdong814617937 的回复:]
大家太注意我那句话了,还是得不到所输入的IP地址啊!
CSetupDlg dlg;//得到IP地址的对话框
if(dlg.DoModal()==IDOK)
{
// AfxMessageBox(strIP);
unsigned char *pIP;
    CString strIP;
DWORD dwIP;

UpdateData(FALSE);//

dlg.m_IPText.GetAddress(dwIP);
pIP = (unsigned char*)&dwIP;
strIP.Format("%u.%u.%u.%u",*(pIP+3), *(pIP+2), *(pIP+1), *pIP);
AfxMessageBox(strIP);
}
输出的不正确啊!
[/Quote]
S_S_Ge 2009-12-15
  • 打赏
  • 举报
回复
UpdateData();
向立天 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dongdong814617937 的回复:]
大家太注意我那句话了,还是得不到所输入的IP地址啊!
CSetupDlg dlg;//得到IP地址的对话框
if(dlg.DoModal()==IDOK)
{
// 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);
UpdateData(FALSE);
AfxMessageBox(strIP);
}
输出的不正确啊!
[/Quote]

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);
MoXiaoRab 2009-12-14
  • 打赏
  • 举报
回复
如果要这样,就应该是UpdateData(TRUE)了
dongdong814617937 2009-12-14
  • 打赏
  • 举报
回复
大家太注意我那句话了,还是得不到所输入的IP地址啊!
CSetupDlg dlg;//得到IP地址的对话框
if(dlg.DoModal()==IDOK)
{
// 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);
UpdateData(FALSE);
AfxMessageBox(strIP);
}
输出的不正确啊!
MoXiaoRab 2009-12-14
  • 打赏
  • 举报
回复
最后加上一句
UpdateData(FALSE);
LPR_Pro 2009-12-14
  • 打赏
  • 举报
回复
UpdateData();

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧