MFC组合框选中选项后打开对应图片的问题,如图

当选择人类种族后,选择狂战士职业,会出现这张图片,但是选择精灵种族,选择狂战士职业,会出现的不是这张图片(只有六个职业,狂战士,圣骑士,刺客,猎手,急死,巫师,我考虑的是... 当选择人类种族后,选择狂战士职业,会出现这张图片,但是选择精灵种族,选择狂战士职业,会出现的不是这张图片(只有六个职业,狂战士,圣骑士,刺客,猎手,急死,巫师,我考虑的是职业不分种族,5个种族,人类,精灵,兽人,矮人,元素,),我是按当前选项的的索引去显示图片的。但是添加的循环多了运行后界面就会卡死了,如何改善。程序如下:
m_racial 种族的控制变量 m_career职业的控制型变量
void CMyDlg::OnSelchangeRacialcombo2() //种族组合框函数
{
// TODO: Add your control notification handler code here
UpdateData(true);
int nIndex = m_racial.GetCurSel();
int mIndex = m_career.GetCurSel();
if (m_racial.GetCurSel()==0)//即选中人类
{
m_career.ResetContent();//清除目前的所有项
m_career.AddString("狂战士");
m_career.AddString("圣骑士");
}
else
if(m_racial.GetCurSel()==1)/即/选中精灵
{
m_career.ResetContent();//清除目前的所有项
m_career.AddString("刺客");
m_career.AddString("猎手");
m_career.AddString("祭司");
m_career.AddString("巫师");
}
else
if(m_racial.GetCurSel()==2)//即选中兽人
{
m_career.ResetContent();//清除目前的所有项
m_career.AddString("狂战士");
m_career.AddString("猎手");
m_career.AddString("祭司");
m_career.AddString("巫师");
}
}//先给出前三个的程序
void CMyDlg::OnSelchangeCareercombo3()
{
// TODO: Add your control notification handler code here
int nIndex = m_career.GetCurSel();
CString str;
m_career.GetLBText(0,str)//获取职业框的第一个选项
while(nIndex==0)
{
if(str==“狂战士”)
{
m_bmp.DeleteObject();
m_bmp.LoadBitmap(IDB_BITMAP4);//这张位图即为狂战
m_picture.SetBitmap(HBITMAP(m_bmp));//载入位图
UpdateData(false);
}
else
if(str==“圣骑士”)
{ };//先不写了,这if里面还没有加每个职业的属性代码,加了就太长了,没加的时候运行都卡死了
//如果再往下加if else 程序运行直接卡死,但是怎么去改善呢?如何判断比较好呢?职业框中索引为0的情况可能不止狂战士一个职业,选不同种族,索引为0的情况就改变了,我不知道如何修改了,求大神指导!
展开
 我来答
bhtzu
推荐于2016-01-07 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4044万
展开全部

完全没看出,你的while(nIndex==0)有任何意义。

因为种族不同,职业的列表项目不同,所以这里获取索引号没意义,直接判定if(str=="狂战士") else if。。。。。即可。

另外,还是建议增加函数,这样当前函数就是:

void CMyDlg::OnSelchangeCareercombo3() 
{
// TODO: Add your control notification handler code here
CString str;
m_career.GetWindowText(str);
m_bmp.DeleteObject();
m_bmp.LoadBitmap(GetBmpID(str));
m_picture.SetBitmap(HBITMAP(m_bmp));//载入位图
UpdateData(false);
}

即可。

更多追问追答
追问
增加函数,增加什么类型的呢?增加函数的作用是用来干什么的?就是为了显示不同职业的位图吗?m_bmp.LoadBitmap(GetBmpID(str));没有GetBmpID这个函数,不识别
还有两个函数怎么联系起来呢?新增加的另外一个函数怎么调用以前哈桉树的语句?直接调用不影响吗?
追答
GetBmpID这个函数,我在你前一个提问中写了。
函数作为对话框类成员即可。这些都是基础的东西,有空补补吧,编程,基础太重要了。
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式