Insérer Item ListView

Insérer Item ListView - C++ - Programmation

Marsh Posté le 26-03-2006 à 14:36:28    

[][]Bonjour, dans mon programme j'utilise une ListView dont je peux ajouter un item (première colonne). Ce que je souhaite c'est faire de même à partir d'un autre programme, en recherchant de prime abord le HWND de ma fenêtre trop-most, ensuite le HWND de ma SysLitView32, et effectuer l'ajout de l'item par un appel de la fonction ListView_InsertItem, voici le code de mon programme extérieur censé ajouter un item :
 

Code :
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <commctrl.h>
  4. //#pragma comment(lib, "commctrl.lib" )
  5. int main()
  6. {
  7.     HWND hParent, hChild;
  8. hParent = FindWindow("RGWndClass", NULL);
  9. if(!hParent)
  10. {
  11.  fprintf(stderr, "Error : couldn't find top most window !\n" );
  12.  return 1;
  13. }
  14.     hChild = FindWindowEx(hParent, NULL, WC_LISTVIEW, NULL);
  15. if(!hChild)
  16. {
  17.  fprintf(stderr, "Error : couldn't find WC_LISTVIEW !\n" );
  18.  return 1;
  19. }
  20.     printf("ListView found !\n" );
  21.      
  22.       LVITEM item;
  23.  
  24.       char *texte = "leTexte";
  25.  
  26.       item.iItem = 0;
  27.  
  28.       item.iSubItem = 0;
  29.  
  30.       item.pszText = texte;
  31.  
  32.       item.cchTextMax = strlen(texte);
  33.  
  34.       item.mask = LVIF_TEXT | LVIF_PARAM;
  35.  
  36.       //SendMessage(hChild, LVM_INSERTITEM, 0, (LONG)&item);
  37.       ListView_InsertItem (hChild, &item);
  38.  
  39.     return 0;
  40. }


 
Lors de sopn exécution, le HWND de ma SysListView32 est correctement récuperé ; j'ai même teste un effacement avec ShowWindow(hChild, SW_HIDE) ; preuve que le HWND est correct. Pourtant, l'ajout d'un item (cf code plus haut) ne fonctionne pas sur ma fenêtre cible ; en effet rien ne s'affiche... mais avec le même code dans mon programme principal, l'item s'affiche bien...
 
Alors pourquoi l'ajout de l'item est correctement effectué dans mon programme principal mais pas à partir de mon programme extérieur alors que j'ai récuperé le bon HWND ? Si vous aviez une idée...
 
Merci

Reply

Marsh Posté le 26-03-2006 à 14:36:28   

Reply

Sujets relatifs:

Leave a Replay

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