永发信息网

MFC for 循环里面if 和 else问题

答案:2  悬赏:30  手机版
解决时间 2021-04-07 03:23
  • 提问者网友:温旧梦泪无声
  • 2021-04-06 02:23
MFC for 循环里面if 和 else问题
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-04-06 02:47
if (strYMDHM==strItemYMDHM)//CString直接比较就好了
{
m_lstDtf.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED|LVIS_FOCUSED);
m_lstDtf.SetFocus();
m_lstDtf.EnsureVisible(i,FALSE);
}
else
{
//  CLanguageX *plan = &theApp.m_langx;
//  CString strText;
//  plan->GetString(666,strText);
//  MessageBox(strText.GetBuffer(),NULL,MB_OK);
AfxMessageBox(strYMDHM+_T(" ")+strItemYMDHM); //看看哪里不同
return;
}追问谢谢你的回答,刚刚试了你的方法,strItemYMDHM一直都是显示第一行的记录追答这样看不出为什么你只能获取第一条。
不过你的逻辑是有问题的,你这个for循环是做的list遍历,那么你不能每个不同的就弹消息吧。
合理的逻辑,应该是这样的:(需要完善)
for(i = 0;i < m_lstDtf.GetItemCount();i++)
{
//获取ListCtrl时间
strItem = m_lstDtf.GetItemText(i,0);
strItemYMDHM = strItem.Left(16);

if (strYMDHM==strItemYMDHM)
{
m_lstDtf.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED|LVIS_FOCUSED);
m_lstDtf.SetFocus();
m_lstDtf.EnsureVisible(i,FALSE);
break;//跳出循环
}
}
if(i==m_lstDtf.GetItemCount())//遍历完成后没有匹配的,这里需要完善
{
CLanguageX *plan = &theApp.m_langx;
CString strText;
plan->GetString(666,strText);
MessageBox(strText.GetBuffer(),NULL,MB_OK);
return;
}
全部回答
  • 1楼网友:胯下狙击手
  • 2021-04-06 03:35
你可以就strcmp()函数写一个messagebox返回值,看看返回的是什么值?然后就是返回你要对比的strYMDHM和strItemYMDHM两个值,对比一下看看哪里出了错。你的strYMDHM中间有个空格,但是在你的字符串左16位里面不知道有没有,你把strYMDHM里面的空格去掉试试。追问是一样的,因为不加else没问题的,加了后就只弹出else里的MessageBox
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯