Fin de création d'une fenêtre...

cs_Zart Messages postés 285 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 27 juin 2006 - 9 mai 2005 à 11:22
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006 - 13 janv. 2006 à 15:28
Bonjour,

Y a t il une méthode permettant de savoir si une fenêtre est complètement chargée ?



Le truc serais que ma fenêtre se lance... Ensuite quand elle est lancé
je veux faire une boucle qui réalise un test tant que celui-ci n'est
pas vrai ou jusqu'à ce que la fenêtre soit fermée...

J'ai déjà essayé avec un Timer mais ça plante...

J'ai déjà essayé avec un OnSize() mais cette méthode n'est jamais appelé..

Voilà à moins que je n'ai pas fait ce qu'il fallait ou que je me soit planté dans les indics que j'ai lu sur le site !

Moi je pensais plus à une méthode à surcharger, mais je ne vois vraiment pas laquelle !



Sinon je travaille sous evc++ (ceci explique peut être cela), à priori
c'est pareil que sous vc++ mais il y a quelques méthodes "manquantes",
ET j'utilise les MFC (je sais c'est pas génial mais on fait avec...)



Si vous pourriez éclairer ma lanterne ce serais très sympa

5 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
9 mai 2005 à 11:58
Après le CreateWindow (ou après le constructeur de la fenêtre), la fenêtre est créée donc tu peux mettre ton code la.

Si tu veux surcharger il y a OnCreate:



int TaFenetre::OnCreate( LPCREATESTRUCT lpCreateStruct)

{

if(!CWnd::Create(lpCreateStruct)) return 0;

// Ton code a ajouter ici

return 1;

}

0
cs_Zart Messages postés 285 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 27 juin 2006 1
9 mai 2005 à 15:14
Ouais d'accord mais ce que je voulais dire c'set qu'il ne faut pas que
cette méthode soit appelé à la fin de la création mais à la fin de
l'affichage...

Désolé je me suis mal exprimé !

Mais à ce moment là, la fenêtre n'est toujours pas affichée donc il se
peut que certaines des fonctions que je souhaite utiliser ne marchent
po !
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 mai 2005 à 16:02
OnPaint alors ca me semble pas mal. Tu utilises une variable
bFirstPaint que tu mets à FALSE dans le contructeur, pour que tu ne
fasse qu'une seule fois ce que tu veux faire.

Je vois que tu veux faire une boucle tant qu'un test est faux. Ca va
poser des problèmes, ca va monopoliser ton UC et l'application passera
tout son temps dans cette boucle. Je ne sais pas exactement ce que tu
veux faire, mais il y surement mieux comme méthode.
0
cs_Zart Messages postés 285 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 27 juin 2006 1
9 mai 2005 à 16:41
Tu veux que je te dise ce que je veux faire exactement...

C'est simple je dois tester un état d'un port (Bluetooth).

Si le port n'envoie pas les infos qu'il me faut je dois attendre...

Donc ma solution était une solution modulaire car je dois l'utiliser en
plusieurs point dans mon appli. Je fait appel à cette classe qui dérive
de CDialog, une fois celle-ci lancé elle lance la méthode qui teste.
Tant que l'état que je veux n'est pas atteint cette fenêtre reste
apparente.

Effectivement cette méthode est bloquante j'ai déjà testé de la faire
tourner dans un autre Thread mais c'est le bordel car je ne peux avoir
d'accès aux éléments de la classe.

Et, je n'arrive pas à utiliser un Timer je sais po pourquoi. Pourtant
j'utilise SetTimer(..) pour l'initialiser et OnTimer est redéfini. Donc
je vois pas pourquoi ça foire.



J'essaie le OnPaint et je te dis.

Sinon si tu as une idée sur le comment je pourrais faire ça tu me dis.

Mercique même...
0

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

Posez votre question
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006
13 janv. 2006 à 15:28
je pense que le problème n'est pas tout a fait la. En clair, si j'ai
bien compris, tu cherches a faire une boucle en tache de fond, et tu
veux pouvoir continuer d'utiliser ta fenetre (je ne suis pas sur que
faire une boucle soit la meilleur chose, mai bon)... Pour que ca
marche, tu dois créer un thread qui traitera ta bloucle. Un thread pr
ll'interface et un pr le traitement... et la ca devrait mieu marcher
0
Rejoignez-nous