Fermeture automatique [Résolu]

Signaler
Messages postés
6
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
-
Messages postés
6
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
-
Bonjour,

Je souhaiterais fermer automatiquement ma boite de dialogue en plus d'avoir le bouton ok et cancel.
Pourriez vous me renseigner sur ce sujet et aussi sur les fonctions endDialog et wm_close si elles sont à utiliser ?

Merci

11 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Essaie EndDialog(0); à la place de OnClose
Messages postés
6
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
1
C'est peut etre la fonction OnClose() qui ne convient pas (bien que je ne vois pas quoi mettre d'autre).
En effet, j'ai crée un bouton qui permet de fermer cette fenetre et je lui ai mis CDialog::OnClose() dans les lignes de commande quand on clic dessus mais il ne ferme pas la fenetre pour autant.

Ca inspire quelqu'un ?
Merci
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
EndDialog sera forcément utilisée pour fermer le dialogue. Mais qu'entends-tu par fermeture automatique?
Messages postés
6
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
1
J'aimerais créer une temporisation et à la fin de cette temporisation, la boite de dialogue se fermerait toute seule.
Comment procéder ?
Merci
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Utiliser un Timer (SetTimer). Puis quand tu recois un WM_TIMER, tu appelles EndDialog
Messages postés
6
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
1
Je suis un peu perdu, j'ai crée les fonctions OnTimer() et Onclose ds ma bdd().
Dans le OnTimer(), j'ai mis SetTimer(parametres) et j'ai appelé le OnClose().
Mais appremment, c'est pas la bonne combi !

merci
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
OnTimer sera appelé quand la temporisation sera terminée. C'est a dire qu'il faut appeler SetTimer pour recevoir WM_TIMER (ou OnTimer). Tu devrais donc faire ton SetTimer à l'ouverture de la dialogBox, c'est a dire dans OnInitDialog
Messages postés
154
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
2 octobre 2009
1
En clair, pour illustrer ce que dit vecchio56 :

#define ID_TIMER 1001
BOOL CALLBACK MainDlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
// Création d'un timer de 5 secondes
SetTimer(hDlg,ID_TIMER,5000,NULL)
return TRUE;
case WM_TIMER:
EndDialog(hDlg,0);
break;
case WM_CLOSE:
case WM_DESTROY:
EndDialog(hDlg,0);
return FALSE;
}
return FALSE;
}
Messages postés
6
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
1
J'ai mis ce code dans mon OnInitDialog() :

OnInitDialog()
{ CDialog::OnInitDialog();
SetTimer(1,2000,0);
CDialog::OnClose();

mais même en modifiant les paramètres de SetTimer(), la boite de dialogue s'ouvre et se ferme qusi instantanément !!
J'ai donc mis le CDialog::OnClose() dans le OnTimer() mais là, la bdd ne se ferme plus !
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Normalement c'est bien dans OnTimer(UINT nIDEvent) qu'il faut le mettre, et elle devrait se fermer au bout de 2 secondes
Donc la je vois pas...
Messages postés
6
Date d'inscription
samedi 24 décembre 2005
Statut
Membre
Dernière intervention
24 décembre 2005
1
Impec !! ca marche !! merci !