我创建了一个dialog,上面有一个ComboBox控件,两个ListBox控件。ComboBox有两项:规则一、规则二;
我希望当我选择其中一项,如“规则一”时,从数据库表中读出一些规则显示在ListBox1中;然后从选中ListBox1中某项,按添加,该项就可以加到ListBox2中;从ListBox二中选定一项按删除,就可以删除该项。但是现在有两个问题想请教大家:
1.怎样实现选中Combobox中一项,ListBox就会显示那些规则?代码我知道怎么写,主要是:代码添加在什么地方?
2.要返回ListBox中选定项的字符串,用哪个函数?返回ListBox中索引号为i的那项的字符串呢?(我定义了一个ListBox的control变量m_ListAll)。我查MSDN,也没查处个所以然,呵呵。

解决方案 »

  1.   

    combobox:  ON_CBN_SELCHANGE(IDC_COMBOWORK, OnSelchangeCombowork) msg funcclistctrl: OnClickProcselectlist(NMHDR* pNMHDR, LRESULT* pResult) (msg)
    {
    POSITION pos = m_ProcSelectList.GetFirstSelectedItemPosition();
    if(!pos)
    return; int nItem = m_ProcSelectList.GetNextSelectedItem(pos);
    if(nItem<0||nItem>=m_ProcSelectList.GetItemCount())
    return;   char szFid[32];
    m_ProcSelectList.GetItemText(nItem, 4, szFid, 32);}
      

  2.   

    1、映射ComboBox控件的CBN_SELCHANGE消息。
      

  3.   

    int iCount;
    CString strLeft,MyTemp;
    CStringArray AllRightRule;
    _variant_t Right;MySet->MoveFirst();
    Right=MySet->GetCollect(_variant_t("IndexRight"));
    Right.ChangeType(VT_BSTR);
    strRight=Right.bstrVal;
    AllRightRule.Add(strRight);
    iCount=AllRightRule.GetSize();
    MySet->MoveNext();
    if(!MySet->EndOfFile)
    {
        int sign;
        for(int i=0;i<iCount;i++)
        {
            sign=0;
            Right=MySet->GetCollect(_variant_t("IndexRight"));
            Right.ChangeType(VT_BSTR);
            strRight=Right.bstrVal;
            if(strRight==AllRightRule.GetAt(i))
            {
                sign=1;
                break;
            }
        }
        if(sign==0)
            AllRightRule.Add(strRight);
        iCount=AllRightRule.GetSize();
        MySet->MoveNext();
    }iCount=AllRightRule.GetSize();
    for(int i=0;i<iCount;i++)
        m_ListAll.AddString(AllRightRule.GetAt(i));