problemas con de stl

22/04/2004 - 12:50 por Sergio | Informe spam
Quiero pasar datos de una lista a otra, cuando hacen doble click sobre
una listctrl. El problema es que en la linea que hago:
lst->SetItemText(i,1,n.puesto);
el valor de n.puesto ¡¡desaparece!!

Os pongo el código para que me digais si hago algo raro.
Podria pensar que no recoge bien el valor, pero he observado el valor de
las variables con puntos de interrupción, y despues de poner el
nombre(lo único que hace bien), los valores se pierden, y que yo sepa,
no tiene sentido.

list<jugador>::iterator act;
CString str;
jugador n;
char aux[10];
list <int>::size_type i;

CListCtrl *lst = (CListCtrl *)GetDlgItem(IDC_DESCONVOCADOS);
if (lst) {
POSITION pos = lst->GetFirstSelectedItemPosition();
if (pos) {
int index = lst->GetNextSelectedItem(pos);
DWORD itemdata;
itemdata = lst->GetItemData(index);
for (act = m_jugadores.begin();act != m_jugadores.end();act++) {
if (itemdata == act->id) {
n = (*act);
m_convocados->push_back((*act));
lst->DeleteItem(index);
lst = (CListCtrl *)GetDlgItem(IDC_CONVOCADOS);
i = m_convocados->size();
lst->InsertItem(i,n.nombre);
lst->SetItemText(i,1,n.puesto);
_itoa(n.num,aux,10);
lst->SetItemText(i,2,aux);
m_jugadores.erase(act);
break;
}
}
}
}

tb he probado esto por si acaso, pero tampoco:

list<jugador>::iterator act;
CString str;
jugador n;
char aux[10];
list <int>::size_type i;
CListCtrl *lst = (CListCtrl *)GetDlgItem(IDC_DESCONVOCADOS);
if (lst) {
POSITION pos = lst->GetFirstSelectedItemPosition();
if (pos) {
int index = lst->GetNextSelectedItem(pos);
DWORD itemdata;
itemdata = lst->GetItemData(index);
for (act = m_jugadores.begin();act != m_jugadores.end();act++) {
if (itemdata == act->id) {
m_convocados->push_back((*act));
lst->DeleteItem(index);
lst = (CListCtrl*)GetDlgItem(IDC_CONVOCADOS);
i = m_convocados->size();
lst->InsertItem(i,(*act).nombre);
lst->SetItemText(i,1,(*act).puesto);
_itoa((*act).num,aux,10);
lst->SetItemText(i,2,aux);
m_jugadores.erase(act);
break;
}
}
}
}

gracias por adelantado.
 

Leer las respuestas

#1 Sergio
22/04/2004 - 13:02 | Informe spam
Me he dado cuenta que declaro i de una forma erronea, en realidad
deberia ser así:
list <jugador>::size_type i;
pero aún y todo no hace lo que espero.

Preguntas similares