Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: dewolo en 4 Octubre 2011, 21:37 pm



Título: detectar item de lista con doble click y obtener id de elemento
Publicado por: dewolo en 4 Octubre 2011, 21:37 pm
(http://img830.imageshack.us/img830/5063/111111111z.png) (http://imageshack.us/photo/my-images/830/111111111z.png/)

Uploaded with ImageShack.us (http://imageshack.us)

esta en la parte de maindialog
Código:
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..



Título: Re: detectar item de lista con doble click y obtener id de elemento
Publicado por: Eternal Idol en 4 Octubre 2011, 21:48 pm
LB_GETCURSEL (http://msdn.microsoft.com/en-us/library/windows/desktop/bb775197%28v=VS.85%29.aspx).


Título: Re: detectar item de lista con doble click y obtener id de elemento
Publicado por: dewolo en 4 Octubre 2011, 22:06 pm
ai si gracias  ::)

Código:
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




Título: Re: detectar item de lista con doble click y obtener id de elemento
Publicado por: Eternal Idol en 4 Octubre 2011, 22:11 pm
Supongo que podes usar esta macro para simplificar pero en definitiva es lo mismo:

ListBox_GetCurSel (http://msdn.microsoft.com/en-us/library/windows/desktop/bb856435%28v=VS.85%29.aspx).


Título: Re: detectar item de lista con doble click y obtener id de elemento
Publicado por: dewolo en 4 Octubre 2011, 22:16 pm
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



Título: Re: detectar item de lista con doble click y obtener id de elemento
Publicado por: Eternal Idol en 4 Octubre 2011, 22:19 pm
LBN_DBLCLK (http://msdn.microsoft.com/en-us/library/windows/desktop/bb775153%28v=VS.85%29.aspx).


Título: Re: detectar item de lista con doble click y obtener id de elemento
Publicado por: dewolo en 4 Octubre 2011, 22:23 pm
Código:
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  :rolleyes:

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


Título: Re: detectar item de lista con doble click y obtener id de elemento
Publicado por: Eternal Idol en 4 Octubre 2011, 22:57 pm
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 ...