text = (char *)GetItemDataPtr(GetCurSel());

解决方案 »

  1.   

    试过了,以上两个命令都不行.
    还有什么办法能够取得ComBox控件中的内容呢?
      

  2.   

    SetItemDataPtr(ptr)
    的ptr是不是内存已释放。
    ptr = new char[n]
    SetItemDataPtr(index,ptr);
      

  3.   

    你是需要COMBOX的拿部分内容,
    是LIST的,还是EDIT中的。
    如果是EDIT的,这样可以:
    ComboBox_GetText();就可以了
    如果是LIST中的,
    使用SendMessage(),使用CB_GETLBTEXT消息。
      

  4.   

    CString text;
      text = * (CString *)GetItemDataPtr(GetCurSel());
    这代码意思很暧昧。你把一个Cstring *存储在一个ITEM的附加数据里,现在想取回来,是吗?
    1。你原来存储进去的Cstring,如果不是全局变量,那么,它已经被释放了;
    2. 我还是建议你使用分配 char 的缓冲区来作为存储的对象。
    WIN32函数,只要不是很特殊的那些,对2000和98应该是没有区别的。
      

  5.   

    此题出于北京希望电了出版社出版的<Visual C++编程高手>(ISBN:7-900049-66-5/TP .66)第26章程序6"DAO组合框"。在Windows 2000下可以正常使用,但在Windows 98下即出现:  CString text;
      text = * (CString *)GetItemDataPtr(GetCurSel());语句错误。原函数如下:DWORD CDaoComboBox::getText(WPARAM maxLength, LPARAM textbuffer)
    {
    // return the associates return-value (as string) CString text = * (CString*)GetItemDataPtr(GetCurSel()); if ( (maxLength-1) < (WPARAM)text.GetLength())
    text = text.Left(maxLength-1);
    strcpy( (char *)textbuffer, text ); return text.GetLength();
    }