Le LPARAM de EnumWindowsProc ???
Simple, c'est toi qui y mets ce que tu veux quand tu appelles EnumWindows(). Si tu passes un pointeur sur un tableau, le tour est joué.
typedef struct _MYENUM {
DWORD idx; // ++ chaque tour
HWND hwnds[NBR];
char *names[NBR];
} MYENUM, *LPMYENUM;
tu pourrais passer un pointeur sur un truc du genre. Fais gaffe aux alloc memoire correctes et free() correspondants. Je precise que ce n'est pas le modele le + performant mais grosso modo c'est ce que feront les CStringArray et autres bidules mfc.
Pour la F1 je te conseille:
NBR = 0;
1) 1er appel EnumWindows avec LPARAM sur DWORD *NBR.
Alloc 1 seule fois de memoire totale
hmem = malloc(NBR*52 + NBR*4 + 4);
NBR*52 pour les noms
NBR*4 pour hwnds
4 pour pour DWORD idx
ciao...
-------------------------------
Réponse au message :
-------------------------------
> Merci de ta réponse ! C t bien cool.
> Avec la fonction IsWindowVisible et GetClassName (que j'ai vu dans tes sources :-) je peux faire à peu pres le trie.
> Mon critère de trie etait l'axe-Z.
>
> Par contre j'aurrais aimé stocker les noms des fenetres ainsi que les hwnd dans deux tableau un CStringArray et un CPtrArray.
> Peut tu me dire comment faire avec le pointeur long LPARAM pour accomplir ce miracle ?
>

@plus
> Jib
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> > quel critere de tri ?
> > Que faire des titres de fenetres obtenus ?
> > Donne un cahier des charges précis et alors je te fournirai ce qui te manque.
> > Tu peux voir un exemple enumwindows dans mon source PROG EGOISTE mais le callback est en asm pour les performances.
> > ciao...
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour,
> > > voila je cherche a établir la liste des noms des fenêtres visibles ( c'est à dire la liste que l'on peut voir dans la barre des taches ou le getionnaire de tache/application).
> > > G utilisé la fonction EnumWindows dans le code de telle manière :
> > >
> > > EnumDesktopWindows(NULL,(WNDENUMPROC)EnumWindowsProc,(LPARAM)&tableau);
> > >
> > > avec la fonction :
> > >
> > > bool CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lparam);
> > >
> > > bool CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lparam)
> > > {
> > > char truc[50];
> > > GetWindowText(hwnd,truc,50);
> > > return true;
> > > }
> > >
> > >
> > > Mais je n'arrive pas a faire un trie dans les informations que je récupere, je choppe pleins de noms divers et variées(des fenetres mais aussi autre chose), de blancs et je n'arrive pas a m'en dépatouillé.
> > > Quelqu'un sait il comment trier les informations obtenues ? Merci d'avance.
> > >
> >
>