API :: Gestion de plusieurs fenetres

JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005 - 24 juin 2003 à 15:44
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005 - 25 juin 2003 à 00:52
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 juin 2003 à 16:05
Faut leur definir un type de comportement et en fonction de cela faut les sous classer immediatement vers une callback specifique.
BruNews, ciao...
0
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
24 juin 2003 à 23:28
??
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 juin 2003 à 23:38
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...
0
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
25 juin 2003 à 00:24
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juin 2003 à 00:31
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...
0
JackosKing Messages postés 168 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 avril 2005
25 juin 2003 à 00:52
ok thx:)
JackosKing For EvEr
0
Rejoignez-nous