我先描述下我想要达到的目的.
这是个基于对话框的MFC应用程序有两个Combox控件,关联两个CCombox类型变量,这就随便取为m_combo1,m_combo2吧m_combo1的下拉列表中有HSC101,HSC102,....HSC110等10个字符串对应的当m_combo1选HSC101时,m_combo2下拉列表中显示是VAC,DDA...对应的当m_combo1选HSC102,m_combo2下拉列表中显示是MCNA   ,QQM,HHX...
也是当m_combo1选项不同时,m_combo2中就发生变化这应该怎么做呢??我有个想法是这样的;
取出m_combo1编辑框中的字符串与HSC101...HSC110进行比较,如果是HSC101那么就在m_combo2下拉列表中添加VAC,DDA...
然后依次比较添加...但是这样有个问题啊,这些代码放在哪里呢?我刚开始是放在InitDialog里面,结果实例化之后,更改m_combo1的值,m_combo2不发生变化,这个容易理解,因为已经实例化了,就不会再跳到这个函数里面去了然后我又想,是不是可以通过m_combo1响应某些消息,然后刷新对话框,在onPaint函数里面添加这些代码呢,然后找MSDN看到Combox可以响应CBN_EDITCHANGE消息,我对这个CBN_EDITCHANGE怎么用不是很理解希望帮帮我解决下这个问题,感激不尽!!

解决方案 »

  1.   

    1.消息定义( ON_EN_CHANGE):
    BEGIN_MESSAGE_MAP(CDialogDemo, CDialog)
    //{{AFX_MSG_MAP()   
    ON_CBN_SELCHANG(你的COMBox1的ID, OnChangeEdit1)
     //}}AFX_MSG_MAP   
    END_MESSAGE_MAP()   
    2.执行函数:
    void CDialogDemo::OnChangeEdit1() 
    {
     // TODO: Add your control notification handler code here
    ……
    }   
      

  2.   

    CBN_SELCHANGE + ResetContent/AddString
      

  3.   

    响应你的第一个combobox的CBN_SELCHANGE消息
    在这个消息响应函数里对第二个combobox进行填充
    如果有默认值的话,则在InitDialog里做
      

  4.   

    楼上的都说的差不多了。就是添加 combox1 的CBN_SELCHANG事件,在这个事件中,刷新重新添加combox2里面的内容,即三楼的 ResetContent/AddString;