[win32] Message LB_GETSELITEMS

Message LB_GETSELITEMS [win32] - C++ - Programmation

Marsh Posté le 14-07-2005 à 11:39:09    

Bonjour,
Dans une procedure j'essaie de gerer le message "LB_GETSELITEMS" mais  je ne sais pas m'y prendre pour renvoyer lParam et le retrouver dans mon "tabindex" ....
Dans le programme appelant je fais :

Code :
  1. SendMessage (hstatic1, LB_GETSELITEMS, 10, tabindex);


 
Dans la DLL :

Code :
  1. case LB_GETSELITEMS  :
  2.          lpGrid = (GRID *)GetWindowLong(hwnd,0);
  3.          if (wParam <= 0)
  4.             return(LB_ERR);
  5.          MaxItem = (UINT)wParam;
  6. // ALIMENTER "lParam" (LE TABLEAU d'Entiers "tabindex" ATTENDU au SendMessage)
  7. //    ET LE RETROUVER DANS L'APELLANT POUR EXPLOITER LES NUMEROS DE LIGNES SELECTIONNES ......    
  8.        
  9.          return(0L);
  10. //


 
Normalement, lParam en arrivant dans le message est vide mais c'est la manière de le retourner que je ne maitrise pas ...
Faut il faire un Alloc de memoire de (Nbre de postes * sizeof(UINT) )?  
 
Merci d'avance.

Reply

Marsh Posté le 14-07-2005 à 11:39:09   

Reply

Marsh Posté le 14-07-2005 à 13:48:01    

bah normalement t'as pas à le retourner, puisqu'il est censé être alloué sur le heap :heink:
t'as juste qu'à le lire une fois le message traité
 
tu as bien alloué ce tableau je suppose, en fonction du nombre d'éléments sélectionnés, avec un code dans le genre :

Code :
  1. int nsel=SendDlgItemMessage(hdlg,ID_LISTBOX,LB_GETSELCOUNT,0,0);
  2. int *tabindex=(int *)calloc(nsel,sizeof(int));


et pour alimenter le tableau, tu passes bien également par SenDlgItemMessage() ? du genre :

Code :
  1. SendDlgItemMessage(hDlg,ID_LISTBOX,LB_GETSELITEMS,nsel,(LPARAM)tabindex);


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-07-2005 à 14:42:05    

Quand je traite un buffer en char ça fonctionne :
strcpy(szBuffer, "Je viens de ce module ..." );
memcpy((LPSTR)lParam,szBuffer, sizeof(szBuffer));
 
mais avec de l'integer ça plante, je n'arrive pas a allouer une zone de MaxItem * sizeif(int) ....

Reply

Marsh Posté le 16-07-2005 à 14:39:27    

Tu as vérifié la valeur de MaxItem au moins?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed