我使用了以下结构体:
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里面出现相应的项啊,而只是保留的原来的项?望赐教!
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里面出现相应的项啊,而只是保留的原来的项?望赐教!
你程序有问题呀!
if,else
都进不去!!
void CBiaozhunjianDlg::OnSelchangeComboBigtype() 的原因了,当前的select就是第一项
所以你选择之后名没有触发这个事件
{
nStart = 0;
}
else if(m_strBigtype = "键") // 同上
{
nStart = 2;
}
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 = "销")== "销"
我调的时候并没有发现错误啊?(m_strBigtype = "销")== "销"
这个是什么意思啊?
----------------------------------------------------------------首先 执行 m_strBigtype = "销", 于是 m_strBigtype 的内容变成 "销". 并返回 串对象本身然后if 执行, 因为if不能直接作用于 CString 对象本身 , 所以编译器会找一个代替的方式, 编译器发现 CString 有一个 重载的类型转换运算符, 可以转换成一个 LPCTSTR 类型的指针,于是该操作被用来进行 if 判断, 因为 LPCTSTR 操作对于 CString 来说 永远都不会返回 NULL, 所以if 条件永远为真.
直接 (m_strBigtype == "销")
ps:你初始化part好象有点问题吧,
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型"},
};
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里面的数据是正确的