API :: Gestion de plusieurs fenetres

Signaler
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005
-
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005
-
Bon, voilà, j'ai fait un programme qui peux creer un infinité de fenêtres (en fonction de la ram bien entendue:)), le probleme c'esgt pour la gestion des messages...
j'ai qu'une seule fonction:
long WINAPI WndProc (HWND hwnd, UINT message, UINT wParam, LONG lParam)
et dedant je doit faire un compraison de HWDN..
genre: if (hWnd = hWnd4)...
le probleme etant que les comparaison deviennenet tres vite lourde (meme pas optimisable par un switch car le nombre n'est pas constant.
je voulais savoir si il etait possible de generer une fonction: long WINAPI WndProc (HWND hwnd, UINT message, UINT wParam, LONG lParam) pour chaque fenetre, sans avoir a fair soit meme la coparaison des hWnd

vlà thx:)

JackosKing For EvEr

6 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Faut leur definir un type de comportement et en fonction de cela faut les sous classer immediatement vers une callback specifique.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

??
le comportement, je ne le connait pas , puisqu'il peu charger n'importe quel plug.. pour le callback.. je comprend pas:(

perso j'ai fait qqc dans ce genre:
WndProc..
{
for (in i = 0; i<n; i++)
{
WNDPROC(i);
}

mais je trouve pas ca top :(
JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
une fenetre doit avoir un pointeur sur fonction callback pour RegisterClass(), c'est la wndproc qu'on lui definit. Il est possible de le changer par:
oldproc = SetWindowLong(hwnd, GWL_WNDPROC, newproc);
ce qu'on appelle sous classement.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

donc si j'ai bien compris:):
Pour le moment toutes mes fenêtres sont gérée par le wndproc défini par la classe au début du programme..
Néanmoins a chaque fenêtre étant défini un hWnd, je peux definir une autre wndproc par la fonction cité précédemment?

Si c'est ça, alors c'est #top#

NB: à quoi sert d'enregistrer le oldproc?

JackosKing For EvEr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
et oui le sous classement est super top.
Mais enregistre bien la oldproc pour pouvoir l'appeler ou la restituer si besoin.
Pas besoin de variable supplementaire, tu peux coller ce pointeur dans le membre cbWndExtra par exemple, encore faut-il le demander au systeme.
BruNews, ciao...
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

ok thx:)
JackosKing For EvEr