我使用了以下结构体:
struct partlibrary
{
  char* strBigtype;
  char* strSmalltype;
  char* strSpecific;
}part[]=
{
 "销","圆柱销","GB119-86普通圆柱销A型"
 "销","圆柱销","GB119-86普通圆柱销B型"
 
 "销","圆锥销","GB117-86普通圆锥销A型"
 "销","圆锥销","GB117-86普通圆锥销B型" "键","平键","GB1096-79普通平键A型"
 "键","平键","GB1096-79普通平键B型" "键","楔键","GB1564-79普通楔键A型"
 "键","楔键","GB1564-79普通楔键A型"
};
然后再
void CBiaozhunjianDlg::OnSelchangeComboBigtype() 
{

int nStart; int nIndex = m_comboBig.GetCurSel();
m_comboBig.GetLBText(nIndex,m_strBigtype); if (m_strBigtype = "销")
{
nStart = 0;
}
else if(m_strBigtype = "键")
{
nStart = 2;
}
m_comboSmall.ResetContent();
for(int i = nStart;i<nStart+2;i++)
{
 m_comboSmall.AddString(part[2*i].strSmalltype);
}

// TODO: Add your control notification handler code here

}
为什么当我在选中第一个COMBOBOX的一个选项时,没有在第二个COMBOBOX里面出现相应的项啊,而只是保留的原来的项?望赐教!

解决方案 »

  1.   

    说的不太清楚,不知道你想干什么!!
    你程序有问题呀!
    if,else
    都进不去!!
      

  2.   

    你在选择其他项的时候是也这样的吗?如果不是可能就是
    void CBiaozhunjianDlg::OnSelchangeComboBigtype() 的原因了,当前的select就是第一项
    所以你选择之后名没有触发这个事件
      

  3.   

    问题可能出在你的OnSelchange事件相应函数。
      

  4.   

    我已经在第一个COMBOBOX的属性中的DATA中输入了两个数据:键,销。
      

  5.   

    if (m_strBigtype = "销")  //  这里是不是笔误了? 应该是 == 吧, 下同 
    {
    nStart = 0;
    }
    else if(m_strBigtype = "键")  // 同上
    {
    nStart = 2;
    }
      

  6.   

    if (m_strBigtype = "销")  ----> 这个条件永远都会满足.
      

  7.   

    为什么  if (m_strBigtype = "销")  ----> 这个条件永远都会满足.?
      

  8.   

    调了一下,源程序不少错误,
    part[]=
    {
    "销","圆柱销","GB119-86普通圆柱销A型"
    "销","圆柱销","GB119-86普通圆柱销B型""销","圆锥销","GB117-86普通圆锥销A型"
    "销","圆锥销","GB117-86普通圆锥销B型""键","平键","GB1096-79普通平键A型"
    "键","平键","GB1096-79普通平键B型""键","楔键","GB1564-79普通楔键A型"
    "键","楔键","GB1564-79普通楔键A型"
    };
     if (m_strBigtype = "销")
    {
    nStart = 0;
    }
    else if(m_strBigtype = "键")
    {
    nStart = 2;
    }

    为什么 if (m_strBigtype = "销") ----> 这个条件永远都会满足.?
    (m_strBigtype = "销")== "销"
      

  9.   

    我还是不是很理解?
    我调的时候并没有发现错误啊?(m_strBigtype = "销")== "销"
    这个是什么意思啊?
      

  10.   

    为什么  if (m_strBigtype = "销")  ----> 这个条件永远都会满足.?
    ----------------------------------------------------------------首先 执行 m_strBigtype = "销",  于是 m_strBigtype  的内容变成 "销". 并返回 串对象本身然后if 执行, 因为if不能直接作用于 CString 对象本身 , 所以编译器会找一个代替的方式, 编译器发现 CString 有一个 重载的类型转换运算符, 可以转换成一个 LPCTSTR 类型的指针,于是该操作被用来进行 if 判断, 因为 LPCTSTR 操作对于  CString 来说 永远都不会返回 NULL, 所以if 条件永远为真.
      

  11.   

    我曾经用nIndex作为if的判断条件,可是那样也不行。
      

  12.   

    不是很清楚你程序的功能是什么,
    直接  (m_strBigtype == "销")
    ps:你初始化part好象有点问题吧,
      

  13.   

    初始化part?能不能具体点是什么问题?用== 不行,我已经试过了我的程序的功能就是:有两个组合框,第一个组合框选择不同的项,则第二个组合框也相应地显示相关联地项。
      

  14.   

    改一下:
    struct partlibrary
    {
      char* strBigtype;
      char* strSmalltype;
      char* strSpecific;
    }part[]=
    {
    { "销","圆柱销","GB119-86普通圆柱销A型"},
    { "销","圆柱销","GB119-86普通圆柱销B型"},
     
    { "销","圆锥销","GB117-86普通圆锥销A型"},
    { "销","圆锥销","GB117-86普通圆锥销B型"},{ "键","平键","GB1096-79普通平键A型"},
    { "键","平键","GB1096-79普通平键B型"},{ "键","楔键","GB1564-79普通楔键A型"},
    { "键","楔键","GB1564-79普通楔键A型"},
    };
      

  15.   

    知道你的什么意思了  你看看这样行吗?在我的机器上是能实现的
    struct partlibrary
    {
    char* strBigtype;
    char* strSmalltype;
    char* strSpecific;
    }part[]=
    {
    {"销","圆柱销","GB119-86普通圆柱销A型"},
    {"销","圆柱销","GB119-86普通圆柱销B型"}, {"销","圆锥销","GB117-86普通圆锥销A型"},
    {"销","圆锥销","GB117-86普通圆锥销B型"}, {"键","平键","GB1096-79普通平键A型"},
    {"键","平键","GB1096-79普通平键B型"}, {"键","楔键","GB1564-79普通楔键A型"},
    {"键","楔键","GB1564-79普通楔键A型"}
    };
    int nStart;
    CString m_strBigtype = "";
    int nIndex = m_myCombo.GetCurSel();
    m_myCombo.GetLBText(nIndex,m_strBigtype); if (m_strBigtype == "销")
    {
    nStart = 0;
    }
    else if(m_strBigtype == "键")
    {
    nStart = 2;
    } m_myCombo2.ResetContent();
    for(int i = nStart;i<nStart+2;i++)
    {
    m_myCombo2.AddString(part[2*i].strSmalltype);
    }你要确保你的combobig里面的数据是正确的
      

  16.   

    非常的感谢楼上“theCFan(郁闷的饿猫)”,在你的指引下问题已经解决了。。还要非常的感谢其他的给了我帮助的兄弟们。谢谢了!