Fonction qui recupere le HWND du prog courrant...???

youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 9 déc. 2004 à 15:25
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 10 déc. 2004 à 16:40
j'aurai besoin de recupere le HWND,
je sais ke l'on peut le mettre en global du genre

LRESULT CALLBACK DlgMainProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) //main procedure
{

avec case WM_INITDIALOG:
{
mainHwnd=hwnd;
//ou mainHwnd est en global

...
}

mais je trouve pas ca effectif

UNE SOLUTION..???
youpi :)

9 réponses

simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
9 déc. 2004 à 17:43
SAlut,

pour ton récupérer un handle HWND, je vois pas d'autre méthodes que de l'enregistrer qq part.

tu peux le récupérer par un GetParent si t'as un handle sur une fenêtre fille
je crois bien qu'il y a que le HINSTANCE que tu peux récupérer sans une autre variable que tu dois connaître...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 déc. 2004 à 21:26
Comment ca tu trouves pas ca effectif? tu veut dire efficace? C'est sûrement aussi efficace que de faire un GetParent à chaque fois
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 déc. 2004 à 21:36
Salut,
Comment c'est pas effectif? Quel est le problème exactement? Car je fais exactement comme tu fais pour retrouver ce HWND et ça ne pose pas de problème.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 déc. 2004 à 21:46
vecchio56 > J'ai hesité avant de poster mon précédent message, c'est pourquoi j'ai pas vu le tien. Ce problème m'intrigue moi aussi car je trouve trouve cette méthode même plus efficace que de faire appel à GetParent().
0

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

Posez votre question
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
10 déc. 2004 à 13:41
ok les gars le truc c ke ca garde en mémoire le HWND du prog courrant donc vu ke je suis entrain de purger les fuites mémoires de mon prog et de purger également toute les variables globales, car j'en avais pas mal entre le char * et tout les autres pointeur (HIMAGELIST, WNDPROC, HMENU, HBITMAP,etc...) en mémoire ca pese lourd....
surtout ke la plupart du temps je peux pas les vider parceke je les utilises regulierements....

mon probleme est en faite une optimisation....
j'ai pensé o get parent mais j'ai tester ca pour verif
HWND testhwnd=GetParent(0);
ShowWindow(testhwnd,SW_HIDE);

en pensant ke dans le getparent en metant NULL il recupererait selui courant...

bref apres sur le point ke c plus effectif de mettre en mémoire ou d'appeler une fonction.... c sur ke sur des prog comme les miens c pas tres grave car il n'y a que 2000 lignes de codes....

je pense que le temps d'acces est peux etre un peux plus long (kelke milli secondes) mais ke l'on ne surcharge pas les places mémoires...

en bref peut etre ke je me trompe, ....

pour resoudre pour le moment avant ke kelk'un me trouve mieu je fais un findwindow sur la class de mon prog....

il est appellé juste une 50aine de fois (boucles)donc.... je sais pas

youpi :)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 déc. 2004 à 14:01
4 octets c'est sur que ca pèse lourd?
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 déc. 2004 à 14:50
C'est pas en virant les handles qui sont en variable globale que tu vas éviter des fuites mémoires. De plus, pour sauvegarder 1 seule varaible globale, il faut que le système alloue au moins une page mémoire (4 Ko) pour la section .data ou .bss alors autant l'utiliser.
0
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
10 déc. 2004 à 16:35
ok bon je v rester en global alors...

merci les gars
youpi :)
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 déc. 2004 à 16:40
Par contre, si tu veut limiter la visibilité de certaines variables à un module (fichier source), déclare la static, elle aura une portée globale limitée au module ou elle est définie.

Ainsi, tu pourra avoir une variable static HWND s_hWnd; dans chaque module se référant à la fenêtre dont le module s"occupe (tu peux regarder ma source "serial" pour + de détails dans lequel chaque fenêtre est dans un .cpp diférent avec ses variables de module et ses traitements de messages)
http://www.cppfrance.com/code.aspx?ID=18704
0
Rejoignez-nous