大家好:   我同事发现一个comboBox的问题,我觉得是一个bug。大家帮忙看看   首先,在对话框上创建一个CComboBox控件,之后使用ClassWizard将它和CString m_combo相关联.   之后,在OnInitDialog中,对CComboBox进行初始化
                m_combo = "1";
                ((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("123");   最后,当对话框显示出来的时候,查看comboBox控件发现上面显示的是123,而不是预想中的1.

解决方案 »

  1.   

    OnInitDialog()最后调用了UpdateData(FALSE);吗??加上这句试试。
      

  2.   

    不好意思,话没有说全,不当心按到enter键了回1楼:
          CComboBox是Dropdown类型。
    回2楼:
          在OnInitDialog最后使用UpdateData(FALSE)了。
      

  3.   

    m_combo CString类型的变量保存的是你选中的字符串,
    m_combo = "1"; 根本就没有这个项目。我的测试过程
    m_comboxString = "124";
    ((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("124");
    ((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("123"); 

    UpdateData(FALSE);
    m_comboxString = 多少,就选择多少。
      

  4.   

    呵呵..用下面的代码,你再试试看... m_combo = "AAAAA"; 
    ((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("123"); 
    UpdateData(FALSE);
      

  5.   

    回hanbo79和lizhigang34:      经过测试发现,只有当m_combo的值为CComboBox中的某个字符串的初始几个字节的时候,才会出现上述现象,即界面显示的字符串和m_combo的值不相同的情况。    
      

  6.   

    不是BUG, 你有没ADDSTRING "1" , 你把COMOBOBOX关联个CSTRING 有啥用
      

  7.   

        谢谢,大家参与,我已经弄明白了
        
       comboBox控件是由ListBox与edit(或者是static)2个控件组成。(MSDN)    ListBox负责存储数据,也就是说咱们用AddString加载的字符串都存储在ListBox控件中,而Edit负责显示数据。(推断)    咱们在edit中输入字符串,comboBox回自动的查找ListBox中的字符串,如果有以此开头的字符串,则显示ListBox中的字符串,如果没有,则显示输入字符串。(测试与MSDN)    当咱们使用CComboBox关联的字符串对CComboBox赋值时,相当于在edit中输入字符串。    
        In addition, if the combo box has the drop-down list style, the user can type the initial character of one of the items in the list, and the list box, if visible, will highlight the next item with that initial character.                                                                                                  --MSDN
      

  8.   

    不是bug.关联字符串类型没作用呢。
    学习一下