m_nlist.SetItemDataPtr(n,nox);
MessageBox(nox);//测试输出  nox是char*型的输出是正确的字符串int n=m_nlist.GetCurSel();
stu_nox=(char *)(m_nlist.GetItemDataPtr(n));
stu_no.Format("%s",stu_nox);
MessageBox(stu_no);
//输出的就是乱码stu_nox是char*型的

解决方案 »

  1.   

    char*类型的直接用SetItemData不是更方便吗?
      

  2.   

    SetItemData  只能绑定一个32位数吧~~ char*是不可以的~~貌似cannot convert parameter 2 from 'char *' to 'unsigned long'
      

  3.   

    SetItemData  只能绑定一个32位数吧~~ char*是不可以的~~貌似cannot convert parameter 2 from 'char *' to 'unsigned long'
      

  4.   

    SetItemData(nItem, (DWORD)nox);//nox是new创建的吗?如果nox是局部变量,结果是不正确的。
      

  5.   

    理解你的意思了~~new会new出来很多个啊~~每个ITEM都要~~我试着new读出来的也不对~~貌似是类型的问题~~
    我再试试~~
      

  6.   

    //初始化数据。
    BOOL CMyDialog::OnInitDialog()
    {
        ...
        // TODO: Add extra initialization here
        char *nox1 = new char[20];
        strcpy(nox1, "nox数据1");
        int nIndex = m_wndListBox.AddString("第1项");
        m_wndListBox.SetItemData(nIndex, (DWORD)nox1);    char *nox2 = new char[20];
        strcpy(nox2, "nox数据2");
        nIndex = m_wndListBox.AddString("第2项");
        m_wndListBox.SetItemData(nIndex, (DWORD)nox2);

        ...
    }//使用数据。
    void CMyDialog::OnButton1()
    {
        CString stu_no;
        int n = m_wndListBox.GetCurSel();
        char *stu_nox = (char *)m_wndListBox.GetItemData(n);
        stu_no.Format("%s",stu_nox);
        MessageBox(stu_no); 
    }//删除数据。
    void CMyDialog::OnDestroy() 
    {
        ...
        int nCount = m_wndListBox.GetCount();
        for (int i = 0; i < nCount; i++)
        {
            delete[] (char *)m_wndListBox.GetItemData(i);
        }
    }
      

  7.   

    这个SetItemData和SetItemDataPtr是一样的,只会将参数作为数值来保存,而不会拷贝指针指向的内容(也没法判断大小啊);所以,问题是你指针指向的内容不能是局部的,必须在使用的范围内有效,一般可以动态分配,在删除该项目的时候再释放;这个指针也可以是指向固定区域(比如成员变量或者其他有效生存期内的变量)。
      

  8.   

    我搞明白了~~~我还是直接new一个CString~~已经解决了
    果然就是局部的问题~~
    接贴了~~
      

  9.   

    char *指针也可以哈
    -----------------------------------------------
    http://www.wantsoft.com
    隐形者软件代码交流博客
    -----------------------------------------------