(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
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..
LB_GETCURSEL (http://msdn.microsoft.com/en-us/library/windows/desktop/bb775197%28v=VS.85%29.aspx).
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
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).
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
LBN_DBLCLK (http://msdn.microsoft.com/en-us/library/windows/desktop/bb775153%28v=VS.85%29.aspx).
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
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 ...