[C con Clase] Como obtengo las cadenas de un combobox uno a la vez

Steven Davidson steven en conclase.net
Lun Jun 18 21:38:41 CEST 2007


Hola Luis,

El pasado 2007-06-17 12:08:12, Luis escribió:

L> El anterior correro se ejecuto por acidente.
L> Hola a todos una consulta pequeña por favor, como puedo recorrer los
L> contenidos de un combox, e intentado muchas formas y nada por ejemplo tego
L> esto
L>         while( (Contador <= frmEstadoTFG->cboEstado->Items->Count ) &&
L> (!Encontro) )
L>         {
L>                 Cadena = frmEstadoTFG->cboEstado->Items[Contador] ;
L> }
L> en mi combox tengo
L> texto1
L> texto2
L> texto3
L> y en cada iteraccion solo quiero obtener el texto, texto1 o texto2, o
L> texto3, uno a la vez muchas gracias y agradesco su ayuda de antemano

Personalmente, no creo que te pueda dar una solución concreta a tu problema, ya que desconozco las API's que usas para programar.

Ahora bien, si estás usando el API de MS-Windows directamente, entonces la solución es enviando el mensaje 'CB_GETLBTEXT' al control "combobox". Por ejemplo,

HWND hCombobox;
TCHAR szTexto[1024];
...
SendMessage( hCombobox, CB_GETLBTEXT, (WPARAM) nIndice, (LPARAM) szTexto );

Si tienes el "combobox" en un cuadro de diálogo, entonces puedes escribir lo siguiente:

HWND hDialogo;
TCHAR szTexto[1024];
...
SendDlgItemMessage( hDialogo, IDC_COMBOBOX, CB_GETLBTEXT, (WPARAM) nIndice, (LPARAM) szTexto );

El parámetro 'WPARAM' del mensaje tiene que ver con el índice del elemento en el listado del control "combobox".
El parámetro 'LPARAM' contiene la cadena de caracteres donde guardar el texto de tal elemento.

Si quieres determinar previamente la cantidad de caracteres de la cada cadena seleccionada, entonces envía el mensaje 'CB_GETLBTEXTLEN'. Por ejemplo,

INT nCant = SendDlgItemMessage( hDialogo, IDC_COMBOBOX, CB_GETLBTEXTLEN, (WPARAM) nIndice, (LPARAM) 0 );


Para más información, sugiero consultar el capítulo 11 del curso del API de MS-Windows. El enlace es: http://winapi.conclase.net/curso/index.php?cap=011 El capítulo 43 habla más acerca de este control: http://winapi.conclase.net/curso/index.php?cap=043


Espero que todo esto te sea de ayuda.

Steven


Más información sobre la lista de distribución Cconclase