我想在combobox中为每个ITEM存储一个对应的字符串
怎么保存和取出?

解决方案 »

  1.   

    应该使用AddString和InsertString来添加和插入字符串进入combobox,用GetLBText来得到combobox中的字符串。
      

  2.   

    是呀。
    可我是想在插入了这些串的同时,在COMBOBOX中保存其对应的字符串
      

  3.   

    m_Combo.AddString("这是最后插入的字符串");
    m_Combo.SetCurSel(0);
      

  4.   

    CString* buffer = new CString;
    CString buf  = "1234^56"; 
    *buffer = buf.Right(buf.GetLength()-buf.Find(L"^")-1);
    int i = m_cCB.AddString(*buffer);
    *buffer = buf.Left(buf.Find(L"^"));
    m_cCB.SetItemDataPtr( i , (void*)buffer);看看你用不用得着
      

  5.   

    UpdateData(TRUE);
    CString str;
    str = m_combo.GetWindowText();
    m_combo.AddString(str);
    m_combo.SetCurSel(0);
      

  6.   

    例如combox的控制变量为m_combo;
    m_combo.AddString("dfdfdfdf");
    就加入了这个字符串或用
    InsertString(0,"dfdfdf")
    这样也可以加入字符串为0索引上要取得item可以这样啊
    int sel;
    CString str;
    sel = m_combo.GetCurSel();
    m_combo.GetLBText(sel, str);
    这样索引为sel的字符串就到了str里了
      

  7.   

    to 54yuandian(原点) 
       你的程序可以把指针放进去,那么要读取该指针对应的字符串呢?
      

  8.   

    就是用你题目中说的SetItemData呀,不过数据要分配在堆中,不能在栈里,例如下面的代码:
    char *pTemp = new char[MAX_PATH];
    memset(pTemp , 0 , sizeof(pTemp));
    int nCount = m_combo.GetCount();
    m_combo.InsertString(nCount , "插入项目");
    strcpy(pTemp , "插入项目");
    m_combo.SetItemData(nCount , (DWORD)pTemp);
    另外,你应该在删除combobox的数据时,把数据摘出来,然后删掉,这样保证没有内存泄漏,例如下面的代码:
    for(int i = 0 ; i < m_combo.GetCount ; i++)
    {
        DWORD dwData = m_combo.GetItemData(i);
        delete[] (char *) dwData;
    }
      

  9.   

    CString * hh = new CString;
       *hh="fff";
       ((CComboBox*) GetDlgItem(IDC_FIELD_1))->AddString ("ffffdddd");
       ((CComboBox*) GetDlgItem(IDC_FIELD_1))->SetItemDataPtr(0,hh);

       CString * yy;
       yy=(CString*)((CComboBox*) GetDlgItem(IDC_FIELD_1))->GetItemDataPtr(0);按照上面的填充方式,可以实现字符串的读取和写入。可是一旦放到下面循环中就不行了CString * hh = new CString;
    for(int i=0;i<5;i++)
    {
       myRecordset->GetFieldValue("a",fd);//读字段a
       myRecordset->GetFieldValue( "b",fi);//读字段b
       *hh=fi;
      ((CComboBox*) GetDlgItem(IDC_FIELD_1))->AddString (fd);
      ((CComboBox*) GetDlgItem(IDC_FIELD_1))->SetItemDataPtr(i,hh);
       myRecordset->MoveNext(); }
     CString*  yy;
      yy=(CString*)((CComboBox*) GetDlgItem(IDC_FIELD_1))->GetItemDataPtr(0);
    这时就yy就无法读出了!