Foros del Web » Programación para mayores de 30 ;) » Programación General »

Acciones en ComboBox

Estas en el tema de Acciones en ComboBox en el foro de Programación General en Foros del Web. Holas; Quiero realizar acciones al seleccionar un item de un ComboBox, y no esperar hasta hacer click en un boton. Estoy estoy utilizando primero: Código: ...
  #1 (permalink)  
Antiguo 07/08/2005, 10:51
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Acciones en ComboBox

Holas;

Quiero realizar acciones al seleccionar un item de un ComboBox, y no esperar hasta hacer click en un boton.

Estoy estoy utilizando primero:

Código:
int indice = SendDlgItemMessage(hwndDlg,IDC_COMBO,CB_GETCURSEL,0,0);

case IDC_COMBO:
     if(indice >= 0)
     {
       GetWindowText(hCombo,strTextoCombo,20);
       SetWindowText(hstatic1,strTextoCombo);
    }
    break;
El problema es que la hacer click en otro lado, por ejemplo, en un edit recién se produce el cambio que quiero.

Ahora intento con esto:

Código:
case WM_NOTIFY:
   LPNMHDR pnmhdr = (LPNMHDR)lParam;
   if(pnmhdr->code == WM_LBUTTONUP && pnmhdr->hwndFrom == hwndDlg  && pnmhdr->idFrom == IDC_COMBO && indice == 0) //pnmhdr->code == NM_CLICK
  {
     GetWindowText(hCombo,strTextoCombo,20);
     SetWindowText(hstatic1,strTextoCombo);
  }
Pero no sucede nada, me pueden decir en que estoy fallando, en el primer caso como sería para que el cambio se de inmediato o en el segundo como hacerlo.

Gracias...
  #2 (permalink)  
Antiguo 07/08/2005, 16:00
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
En cuanto a la primera me parece que deberia funcionarte, lo probe con WM_COMMAND y CBN_SELCHANGE y me funciona al instante.

En cuanto a la segunda. ¿Lo depuraste? ¿En algun momento llega hasta el GetWindowText?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 07/08/2005, 21:52
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Hola;

Gracias por responder, en cuanto en el WM_COMMAND, me rsulta, ahora utilizar el CBN_SELCHANGE, me pillaste, no se como usarlo, recién estoy empezando con C++API de Windos.

Se me olvidó decir, que utilizo el Dev-C++ 4.9.9.2.; en el WM_COMMAND hago referencia al control directamente, ahora el CBN_SELCHANGE, debiera ser dentro del procedimiento del combobox, creo????.

Pero, esta instrucción no he tenido oportunidad de ver como opera en realidad. No encuentro tutoriales o ayudas completas al respecto.

Si me permite otra consulta, es... como evitar que el ComboBox se editable, no escribir dentro de él.

Nos vemos.
  #4 (permalink)  
Antiguo 07/08/2005, 23:38
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
La palabra magica en todo esto es: MSDN.

El CBN_SELCHANGE lo podes ver aca: http://msdn.microsoft.com/library/en..._selchange.asp
El mensaje se le envia a la ventana padre (la que creo al combobox) y podes reconocerlo porque el HIWORD(wParam) es justamente CBN_SELCHANGE y en lParam tenes el HWND del combobox.

Código:
case WM_COMMAND:
  if (HIWORD(wParam) == CBN_SELCHANGE)
En cuanto a que no pueda ser editado tenes que declarle el estilo a: CBS_DROPDOWNLIST ahora debes tener CBS_DROPDOWN.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 08/08/2005, 22:51
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Holas;

Gracias, funciona bien
Debo fijarme bien en lo que estoy aprendiendo.

Nos vemos.
  #6 (permalink)  
Antiguo 08/08/2005, 23:34
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
De nadas, me alegro de que te haya servido
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:23.