Boites de dialogues active au meme moment?

Boites de dialogues active au meme moment? - C++ - Programmation

Marsh Posté le 24-06-2005 à 10:04:28    

Bonjour, je fais actuellement un player audio(en MFC).
Je souhaite afficher une playlist.Ma playlist fonctionne tout va bien.Mais pour rendre l'interface plus interactive,je voudrai faire apparaitre la playlist.
 
Pour cela j'ai crée une autre boite de dialogue, seulement qd celle-ci est active, je ne peux plus toucher la premiere interface avec les boutons play pause etc, elle est figée en arriere plan.
 
QQ'un pourrait-il me dire comment faire pour que les deux boites de dialog reste active en meme temps?
 
Merci

Reply

Marsh Posté le 24-06-2005 à 10:04:28   

Reply

Marsh Posté le 24-06-2005 à 12:04:08    

C'est parce que tu crées un boite modale.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 24-06-2005 à 14:14:05    

C'est ce que j'ai lu sur MSDN.
Seulement je n'arrive pas a savoir comment procéder pour en créer une différente (modeless).
Pourrais-tu m'aiguiller?

Reply

Marsh Posté le 24-06-2005 à 14:20:46    

regardes du coté de ShowWindow si mes souvenirs sont bons :)

Reply

Marsh Posté le 25-06-2005 à 10:56:41    

1. Tu déclares l'objet (sur le tas ou sur la pile à toi de voir) dialogue quelque part de manière que le scope soit toujours valide. Je te conseille comme de le mettre sur la pile en attribut de ton CWinApp
2. Tu appelles la méthode Create du dialogue (faut lui passer l'ID ou la chaîne indentifiant le template du dialogue)
3. Il faut peut être forcer l'affichage via un ShowWindow mais il me semble que ce n'est pas nécessaire.
4. Quand tu n'as plus besoin du dialogue tu le détruis via DestroyWindow. Il ne faut pas détruire directement l'objet sinon la fenêtre (structure maintenue par Windows) n'est pas libérée.
 
Bon je réponds de tête alors il manque peut être quelques explications  :whistle:


Message édité par slash33 le 25-06-2005 à 10:58:43
Reply

Marsh Posté le 27-06-2005 à 09:49:27    

Merci slash33, jvais tout de suite mettre en oeuvre tes explications

Reply

Marsh Posté le 27-06-2005 à 09:53:33    

J'allais oublier: il faut utiliser le constructeur par défaut (sans paramètre) pas celui où tu passe l'ID.
 
Bon un bout de code vaut mieux qu'un long discours donc...

Code :
  1. // déclaration du dialogue non modal de classe CMyModelessDialog
  2. CMyModelessDialog myDialog;
  3. // création du dialog non modal
  4. if (!myDialog.Create(IDD_MYDIALOG, /* NULL = AfxGetMainWnd() */))
  5. {
  6.   // la ressource IDD_MYDIALOG existe-t-elle?
  7. }
  8. // affiche le dialogue non modal. Ce n'est pas nécessaire
  9. // si le style 'visible' (WS_VISIBLE) est coché dans les
  10. // propriétés du dialogue dans l'éditeur de ressources
  11. myDialog.ShowWindow(SW_SHOW);
  12. // destruction du dialogue
  13. myDialog.DestroyWindow();


 
Attention: dès que myDialog est détruit le dialogue l'est aussi (partiellement) donc attention à la portée de la variable.
 
Enfin, tout est expliqué dans la section "Dialog Boxes" de la MSDN. Cherche un peu.


Message édité par slash33 le 27-06-2005 à 10:08:55
Reply

Marsh Posté le 27-06-2005 à 16:47:56    

Merci encore une fois a toi !

Reply

Marsh Posté le 27-06-2005 à 18:41:38    

Ben je te trouves un peu long pour appliquer quelque chose d'aussi rapide   :sleep:

Reply

Marsh Posté le 28-06-2005 à 09:20:06    

c que je bosse sur plusieurs choses a la fois Mosieur!

Reply

Marsh Posté le 28-06-2005 à 09:20:06   

Reply

Marsh Posté le 28-06-2005 à 09:51:55    

Sinon c bon ça marche?

Reply

Marsh Posté le 28-06-2005 à 10:29:45    

oui! c pour ca que je te remercier! c nikel comme pour le code du passage du CString au char!

Reply

Marsh Posté le 28-06-2005 à 10:43:36    

Ravi de t'avoir aidé.

Reply

Marsh Posté le 28-06-2005 à 10:45:03    

Au fait pour le code de passage du CString au char, fais attention y'a une particularité sur le GetBuffer(). Regarde la description de la méthode dans la MSDN tu comprendras.


Message édité par slash33 le 28-06-2005 à 10:48:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed