1、我继承CCombobox自绘控件
   class MyCombobox : public CCombobox
   {
       ...
   }
2、在OnCtlColorListBox中子类化了m_listbox
3、在对话框中动态创建了一个实例,是DOWNLIST类型的
   m_pCombo = new MyCombobox;
   m_pCombo->Create(WS_CHILD|WS_VISIBLE|CBS_DROPDOWN|CBS_HASSTRINGS|CBS_AUTOHSCROLL,CRect(0,0,200,300),this,nID);
4、并用AddString()函数添加了三条字符串
   m_pCombo->AddString("red");
   m_pCombo->AddString("green");
   m_pCombo->AddString("blue");
5、问题是:
   在运行界面中,选择三条中某一条记录时,所选择的文本不能成为本控件的文本,我在调试时发现控件内部的DrawItem中可以正确获得鼠标所选择的项,然后我在控件内部用SetWindowText(str)设置此控件的文本,却不成功
   谢谢各位高手指点,不尽感谢!
   

解决方案 »

  1.   


    用CCOmboBox::SetCurSel比如选择了第一行,就用 this->SetCurSel(0);
      

  2.   

    GetCurSel 取得组合框的列表框中当前选中项(如果有的话)的下标  GetLBText 从组合框的列表框中取得一个字符串  试下。
      

  3.   

    to:skyxie 
    SetCurSel(nIndex);后
    我用GetWindowText(sz);sz还是为“”啊
      

  4.   

    combo里面包含了一个 edit (drop-down)或者 static (drop-down list)你直接getcombo的windowtext没有意义。
      

  5.   


    取值别人已经给你说啦,不是用GetWindowText,这个和edit不一样
      

  6.   

    这样CString str;GetLBText(GetCurSel(), str);
      

  7.   

    to:skyxie 
    用SetCurSel(nIndex);因为是自绘控件,所以在OnPaint中,
    OnPaint
    {
    ...
       CString sz;
       GetWindowText(sz);//在这里sz的值还是为空
       dc.DrawText(sz,&rc,DT_TOP | DT_SINGLELINE);
    ...
    }
      

  8.   

    看来LZ对combo控件还不是很了解,combo控件是由edit,static,list控件组成的,用GetWindowText和SetWindowText的效果是不确定的,建议你去codepeoject下个实例看看
      

  9.   

    如果在OnPain中,直接调用GetLBText(GetCurSel(), sz);会出现异常
      

  10.   


    1.
    你的sz是怎么定义的?2.
    在初始化的时候你的combo可能没有sel,GetCurSel() 可能返回CB_ERR 你应该判断是否有选择,有选择的时候再
    GetLBText
      

  11.   

    to skyxie:
    我先把OnPaint中的画文本这句先注释掉,主要是为了暂时不出异常,应该不会影响控件外部获取这个控件的文本吧,
    但在控件外部,用m_pCombox->GetWindowText(strValue); strValue还是为空
      

  12.   

    倒,上面n个人给你说了combobox不是用GetWindowText,而是用 etLBText
      

  13.   

    to skyxie: 我是说,在这个控件的外部获取文本用GetWindowText(比如选择完毕后,点击按钮);因为这时控件的GetCurSel永远是-1呀
      

  14.   

    那你就到ccombo上去选啊combo没有选中的时候当然什么都看不到了如果你像初始就看到那你就在初始化函数,比如dlg的OnInitUpdate中
    m_pCombox->SetCurSel(0);
      

  15.   

    to skyxie: 
    我用m_pCombox->SetCurSel(0);这句了,控件外部m_pCombox->GetCurSel还是-1
      

  16.   


    m_pCombox->SetCurSel(0);这句也是在控件外部吧?调用的时候AddString完成没有,也就是说,你的combo是不是空的?