此代碼從對話框中獲取一個字符串,並將其與列表中的數據進行比較,如果succesfull設置列表中元素的選擇。 我遇到的問題是,如果它工作,如果我只搜索第一個元素,如果我嘗試搜索任何其他的,它只是忽略如果條件,並一直走到列表的結尾。如果條件,沒有代碼正確執行代碼
void CMFC1Dlg::OnBnClickedButton6()
{
CString variable;
cautare.GetWindowTextA(variable);
variable = variable.MakeLower();
if(variable!="")
{
list<Contact*>::iterator seek;
bool flag = TRUE;
int i = 0 ;
while(flag)
{
seek = agenda.first_element();
if(((CString)((*seek)->getLastName().c_str())).MakeLower() == variable ||
((CString)((*seek)->getFirstName().c_str())).MakeLower() == variable ||
((CString)((*seek)->getFirstAndLastName().c_str())).MakeLower() == variable ||
((CString)((*seek)->getLastAndFirstName().c_str())).MakeLower() == variable)
{
contactsVariable.SetCurSel(i);
this->OnLbnSelchangeList1();
flag=FALSE;
}
advance(seek,i);
i++;
if (i == agenda.list_size())
{
flag = FALSE;
}
}
}
else
MessageBox("No text on input ", "Error", MB_ICONERROR | MB_OK);
cautare.SetFocus();
cautare.SetWindowTextA("");
}
沒有,我需要尋求每次都被設置爲第一要素,所以當我前進時,我到達列表中的「我」元素 – Karudi 2011-05-19 16:33:30
如果他這樣做,提前方法會導致非常奇怪的行爲。 – Osiris76 2011-05-19 16:33:59
@Karudi:'advance(seek,i);我++;'應該在'if()'之前。 – 2011-05-19 16:42:33