Autor
|
Tema: detectar item de lista con doble click y obtener id de elemento (Leído 2,920 veces)
|
dewolo
Desconectado
Mensajes: 83
|
 Uploaded with ImageShack.usesta en la parte de maindialog case IDC_LIST2: switch(HIWORD(wParam)) { case LBN_SELCHANGE: { } }
de esta forma detecta si hubo seleccion de items, pero yo quisiera saber de que item se trata, osea necesitaria una ID de elemento o algo que me diga cual elemento se ha seleccionado..
|
|
|
En línea
|
|
|
|
Eternal Idol
|
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
dewolo
Desconectado
Mensajes: 83
|
ai si gracias  case IDC_LIST2: switch(HIWORD(wParam)) { case LBN_SELCHANGE: { int dwSel = SendDlgItemMessage(hDlg, IDC_LIST2, LB_GETCURSEL, 0, 0);
int num = dwSel; char num_str[255]; itoa(num,num_str,10);
if(dwSel != LB_ERR) { MessageBox(0,num_str,"TP2",0); }
si conoces una mejor forma avisame XD
|
|
|
En línea
|
|
|
|
Eternal Idol
|
Supongo que podes usar esta macro para simplificar pero en definitiva es lo mismo: ListBox_GetCurSel.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
dewolo
Desconectado
Mensajes: 83
|
lo que si que cuando hago click en un elemento se activa LBN_SELCHANGE , pero yo quisiera al hacer doble click asi puedo simular una seleccion de un elemento de la lista y luego hacer algo al respecto, por ejemplo "cargar articulo" que abra otro dialog para cargar un artivulo en conclusion como activar con doble click XD
|
|
|
En línea
|
|
|
|
Eternal Idol
|
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
dewolo
Desconectado
Mensajes: 83
|
case IDC_LIST2: switch(HIWORD(wParam)) { //case LBN_SELCHANGE: case LBN_DBLCLK: { int dwSel = SendDlgItemMessage(hDlg, IDC_LIST2, LB_GETCURSEL, 0, 0);
int num = dwSel; char num_str[255]; itoa(num,num_str,10);
if(dwSel != LB_ERR) { MessageBox(hDlg,num_str,"Final Lab2",0); }
asi funciona, pero asi estaria bien? osea reemplazando el LBN_SELCHANGE por el LBN_DBLCLK, o hay otra forma mas profesional  pregunto porque se dan los dos casos, y es como que el GETCURSEL estaria suponiendo que se hizo una seleccion pero, en realidad se hizo dentro del mensaje de DBLCLK
|
|
« Última modificación: 4 Octubre 2011, 22:28 pm por dewolo »
|
En línea
|
|
|
|
Eternal Idol
|
Yo soy exporte en modulos de modo Kernel (drivers) para de Windows y no en su GUI asi que tomalo con pinzas lo que te diga, lo mejor que podes hacer es leer la documentacion (MSDN).
LB_GETCURSEL puede ser llamado hasta cuando no hay ningun elemento seleccionado, para eso comprabas dwSel, asi que es perfectamente valido llamarlo en LBN_DBLCLK. Es mas, imaginate que no hace falta cambiar de elemento seleccionado para hacer doble click infinitas veces en el mismo ...
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
|