为了让用户输入一个合法的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.   

    最后加上一句
    UpdateData(FALSE);
      

  2.   

    大家太注意我那句话了,还是得不到所输入的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);
    }
    输出的不正确啊!
      

  3.   

    如果要这样,就应该是UpdateData(TRUE)了
      

  4.   


    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); 
      

  5.   

    UpdateData(FALSE);//应该放在获得IP地址前面
      

  6.   

    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 );
      

  7.   

    CSetupDlg dlg;//得到IP地址的对话框 
    if(dlg.DoModal()==IDOK) 

    CString strIP; //m_IPText应该是定义的IP地址变量吧
    dlg.m_IPText.GetWindowText(strIP); 
    AfxMessageBox(strIP);