taron_31 | [][]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 :
- #include <windows.h>
- #include <stdio.h>
- #include <commctrl.h>
- //#pragma comment(lib, "commctrl.lib" )
- int main()
- {
- HWND hParent, hChild;
- hParent = FindWindow("RGWndClass", NULL);
- if(!hParent)
- {
- fprintf(stderr, "Error : couldn't find top most window !\n" );
- return 1;
- }
- hChild = FindWindowEx(hParent, NULL, WC_LISTVIEW, NULL);
- if(!hChild)
- {
- fprintf(stderr, "Error : couldn't find WC_LISTVIEW !\n" );
- return 1;
- }
- printf("ListView found !\n" );
-
- LVITEM item;
-
- char *texte = "leTexte";
-
- item.iItem = 0;
-
- item.iSubItem = 0;
-
- item.pszText = texte;
-
- item.cchTextMax = strlen(texte);
-
- item.mask = LVIF_TEXT | LVIF_PARAM;
-
- //SendMessage(hChild, LVM_INSERTITEM, 0, (LONG)&item);
- ListView_InsertItem (hChild, &item);
-
- return 0;
- }
|
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 |