Afficher une voite de dialogue pendant x secondes - C++ - Programmation
Marsh Posté le 13-07-2004 à 13:21:04
A mon avis, il faudrait que tu crée un timer dans ta fenêtre et que celui-ci appelle une fonction de fermeture de fenêtre (OnOK() ou OnCancel() devrait faire l'affaire).
En fait, je ne suis pas sûr de bien comprendre ce que tu veux: quand tu dis
Citation : pendant que le programme exécute une autre action |
, est-ce que ton "programme", c'est la fenêtre en question ou une autre fenêtre qui a ouvert celle sans contrôle ?
Marsh Posté le 13-07-2004 à 13:31:57
Choupinou a écrit : Est-ce que quelqu'un sait comment faire ou a déjà utilisé les boites de dlg modeless? |
C'est tout écrit dans le MSDN, y'a qu'à chercher un peu Mais bon, je sais que c'est parfois pénible de chercher, alors je vais être bon prince et donner la solution:
il faut que la classe de ta fenêtre modeless ressemble à ça:
Code :
|
Ensuite, dans le constructeur, pense à garder un pointeur sur la fenêtre mère, parfois c'est assez utile
Code :
|
Reste encore la fonction Create à implémenter:
Code :
|
Maintenant, pour créer une instance de la fenêtre, il ne faut pas utilsier le DoModal, mais le Create():
Code :
|
Finalement, utilise le DestroyWindow() pour fermer la fenêtre, et n'oublie pas de détuire le pointeur. En fait, comme en général une fenêtre modeless est faite pour être utilisée en même temps qu'une autre, il faut créer l'instance de la fenêtre modeless en tant que variable membre de la fenêtre mère, c'est plus pratique pour pouvoir accéder à la fenêtre modeless depuis n'importe où dans le code de la fenêtre mère.
Voilà, je pense n'avoir rien oublié.
Marsh Posté le 13-07-2004 à 16:38:31
J'ai essayé mais rien ne s'affiche.
De plus, quand j'écris :
Code :
|
le compilo met :
Si j'écris :
Code :
|
le compilo met :
Par contre si :
Code :
|
Là rien ne se passe. Je pense que c'est à cause du pointeur NULL par défaut
Marsh Posté le 13-07-2004 à 17:18:16
morbac >> t'as oublié de mettre un
Code :
|
après le Create()
Comme ta box ne semble pas avoir l'attribut WS_VISIBLE, le ShowWindow() est obligatoire après la création
Choupinou >> c'est quoi cette classe CSplashScreen ?
Marsh Posté le 13-07-2004 à 17:37:53
Harkonnen a écrit : morbac >> t'as oublié de mettre un
|
Oui ou bien plus simplement si tu crées ta fenêtre avec l'éditeur de fenêtres, tu peux aller dans les propriétés de la fenêtre, sous "More Styles" et cocher "Visible".
Marsh Posté le 13-07-2004 à 17:40:53
Choupinou >> Est-ce que ta CSplashScreen hérite bien de CWnd ? ou de CFrameWnd, ou de CDialog ?
Bon et si tu n'arrives pas à passer le pointeur this, envoie NULL à la place, mais ne compte pas avoir de pointeur sur la fenêtre mère depuis la fenêtre fille. Au passage, il faudra enlever le ASSERT(pParent != NULL);
Marsh Posté le 15-07-2004 à 08:13:42
Tu préfèrerais pas le faire en API32 ?
C'est tellement plus simple.
Marsh Posté le 13-07-2004 à 12:30:56
Bonjour, j'ai créé une boite de dialogue en utilisant les ressources et elle ne comporte aucun contrôle. J'aimerais l'afficher pendant un certains temps (pendant que le programme exécute une autre action) mais soit elle s'affiche et tant que l'utilisateur n'appui pas sur la touche entrée, le programme reste dans le même état soit elle ne s'affiche pas du tout.
J'ai essayé de faire
et
Est-ce que quelqu'un sait comment faire ou a déjà utilisé les boites de dlg modeless?