Appeler une fonction à la création d'une fenêtre

LuckyNut Messages postés 47 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 11 mars 2009 - 24 janv. 2005 à 15:49
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 26 janv. 2005 à 09:25
Salut la cavalerie !

Jai besoin d'appeler une fonction une fois qu'une fenetre (CDialog ou CMainFrame) est affichée à l'écran et pas avant. Comment c'est'y qu'on fait ? Est-ce que MFC envoie un message une fois que la fenêtre est terminée et affichée ?

@+

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
24 janv. 2005 à 16:00
La fenêtre doit recevoir WM_SHOWWINDOW lorsque l'on appelle ShowWindow pour l'afficher. Tu peut appeler ta fonction à ce momemt

Tu peux également d"tecter le premier message WM_PAINT signalant que l'on va dessiner la fenêtre pour la première fois.

Dans les 2 cas, il faudra que tu mémorise le fait que tu sois déjà passer par là pour éviter des appels multiples. Mais bon cela dépend de ce que tu veux faire exactement.
0
LuckyNut Messages postés 47 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 11 mars 2009
24 janv. 2005 à 16:11
En interceptant WM_SHOWWINDOW, cela ne marche pas car la fenetre n'est pas encore affichée.
Intercepte WM_PAINT peut marcher maus ca fait bricolage...

Ce que je veux faire : lancer un calcul automatiquement à l'ouverture d'une fentetre avec barre de progression, affichage de la progression...

Comment faire sa proprement ?
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
24 janv. 2005 à 16:19
Je ne crois pas qu'il y ai de messages dédiés. Tu peux créer un timer lors du WM_CREATE qui laissera le temps de tout afficher. Essaie également de voir du coté des messages WM_ACTIVATE, WM_NCACTIVATE, WM_SETFOCUS, il y en a peut être un qui correspondra...
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 1
25 janv. 2005 à 18:02
intercepte
ON_WM_SIZE()

lance ton action depuis onSize
if(m_bBoiteOK)
action();
et un autre bool pr ne la lancer qu'une fois
static bUneFois

le constructeur met
m_bBoiteOK=false;

et il est mis à vrai à la fin de DoDataExchange

++
Magic Nono: l'informagicien!
0

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

Posez votre question
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
26 janv. 2005 à 02:38
intercepter WM_INITDIALOG et ajouter la section de code dans le corps de la fonction OnInitDialog ajoutée automatiquement par ClassWizard
bonne continuation
a+
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 1
26 janv. 2005 à 09:25
c'est le onInitDialog qui prépare à l'affichage à l'écran, pdt son execution, l'affichage est en cours

Magic Nono: l'informagicien!
0