为了让用户输入一个合法的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地址空间。
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地址空间。
UpdateData(FALSE);
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);
}
输出的不正确啊!
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);
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 );
if(dlg.DoModal()==IDOK)
{
CString strIP; //m_IPText应该是定义的IP地址变量吧
dlg.m_IPText.GetWindowText(strIP);
AfxMessageBox(strIP);
}