IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

plusieurs dialogbox ?


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Par défaut plusieurs dialogbox ?
    Bonjour tout le monde

    Je me demande si c'est possible d'avoir plusieurs dialogbox affichés a partir d'un clic de bouton provenant d'un FormView.

    C'est un peu bizarre c'est vrai, mais j'en ai besoin de savoir comment le faire

    Merci

    vous etes les meilleurs

  2. #2
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bonjour,

    Oui, c'est possible si les boîtes de dialogue ne sont pas toutes modales. Pour afficher une boîte de dialogue en mode non modal, voir la FAQ.

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Par défaut Pas encore resolu
    Salut
    Merci pour votre rapidité
    Mais malheureusement ce n'est pas reglé
    Bon voila quelque extraits de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    class CListeReglesTrieesDlg : public CDialog
    {
    public:
    	CListeReglesTrieesDlg();
     
    	// Données de boîte de dialogue
    	enum { IDD = IDD_ListeReglesTriees  };
     
    protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // Prise en charge de DDX/DDV
     
    	// Implémentation
    protected:
    	DECLARE_MESSAGE_MAP()
    public:
    	virtual BOOL OnInitDialog();
    public:
    	afx_msg void OnBnClickedOk();
    };
     
    CListeReglesTrieesDlg::CListeReglesTrieesDlg() : CDialog(CListeReglesTrieesDlg::IDD)
    {
    }
     
    void CListeReglesTrieesDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    }
     
    BEGIN_MESSAGE_MAP(CListeReglesTrieesDlg, CDialog)
    	ON_BN_CLICKED(IDOK, &CListeReglesTrieesDlg::OnBnClickedOk)
    END_MESSAGE_MAP()
     
    // Commande App pour exécuter la boîte de dialogue
    Et pour charger le dialogbox
    je clique sur un bouton d'une fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void CBCF::OnBnClickedBtnListereglestriees()
    {
    	// TODO: Add your control notification handler code here
    	CListeReglesTrieesDlg Dlg;
    	Dlg.DoModal();
    }

    Donc je n'arrive pas à faire la modification que vous m'avez recommandée.

    Merci encore pour votre collaboration

    EDIT par PetitPapaNoël : Ajout des balises CODE.
    Merci de penser à utiliser ces balises dans vos prochains messages, pour une meilleure lisibilité.

  4. #4
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Il faut mettre en place le code proposé dans la FAQ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CBCF::OnBnClickedBtnListereglestriees()
    {
    	// TODO: Add your control notification handler code here
    	pDlg = new CListeReglesTrieesDlg;
    	pDlg->Create(CListeReglesTrieesDlg::IDD, this);
    	pDlg->ShowWindow(SW_SHOW);
    }

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Par défaut Merci pour votre rapidité mais encore
    Merci pour votre rapidité

    J'ai modifié le code comme vous m'avez mentionné
    Mais...; (Ahh mon dieu, je deteste ce mot 'Mais'...);

    Bref le variable 'pDlg' renvoi [error C2065: 'pDlg' : undeclared identifier]

    SVP je compte encore sur vous et mille merci

  6. #6
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Oups ! Désolé. Dans ma précipitation, j'ai oublié la déclaration de la variable...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CBCF::OnBnClickedBtnListereglestriees()
    {
    	// TODO: Add your control notification handler code here
    	CListeReglesTrieesDlg *pDlg = new CListeReglesTrieesDlg;
    	pDlg->Create(CListeReglesTrieesDlg::IDD, this);
    	pDlg->ShowWindow(SW_SHOW);
    }
    Attention a bien libérer la mémoire allouée au pointeur pDlg quand celui-ci ne sera plus utilisé (c'est expliqué dans la FAQ) !

  7. #7
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Par défaut ca marche maintenant
    merci pour votre aide

    et je demande si je ne libere pas ce pointeur, est ce que c'est un grand inconvénient???

    j'ai suivi ce faq mais il n'est pas tout a fait claire pour un debutant comme moi

    Merci encore

  8. #8
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Citation Envoyé par nmeddouri Voir le message
    et je demande si je ne libere pas ce pointeur, est ce que c'est un grand inconvénient?
    Oui et non. Non parce que le programme fonctionnera quand même ; oui parce que la mémoire allouée ne sera pas libérée. Au mieux, le système d'exploitation s'en chargera, au pire la mémoire occupée par le pointeur ne sera libérée qu'à l'arrêt du PC. Et puis en C++, il faut absolument apprendre à gérer la mémoire des pointeurs.

    Je te conseille donc de mettre ce pointeur en donnée membre de ta vue. Dans le destructeur de ta vue, assure toi que la boîte de dialogue est fermée (sinon, tu la fermes), puis tu détruits le pointeur (sauf si ça a déjà été fait avant).

    Dans la déclaration de ta vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CListeReglesTrieesDlg *m_pListeReglesTrieesDlg;
    Dans les constructeurs de ta vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_pListeReglesTrieesDlg = NULL;
    Dans ta méthode événementielle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void CBCF::OnBnClickedBtnListereglestriees()
    {
    	// TODO: Add your control notification handler code here
    	if (m_pListeReglesTrieesDlg == NULL)
    	{
    		m_pListeReglesTrieesDlg = new CListeReglesTrieesDlg;
    		m_pListeReglesTrieesDlg->Create(CListeReglesTrieesDlg::IDD, this);
    		m_pListeReglesTrieesDlg->ShowWindow(SW_SHOW);
    	}
    }
    Et enfin dans le destructeur de ta vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (m_pListeReglesTrieesDlg != NULL)
    {
    	if (m_pListeReglesTrieesDlg->GetSafeHwnd())
    		m_pListeReglesTrieesDlg->DestroyWindow();
     
    	delete m_pListeReglesTrieesDlg;
    	m_pListeReglesTrieesDlg = NULL;
    }
    Je n'ai pas testé ce code... A voir !

  9. #9
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 525
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 525
    Par défaut
    nmedouri pourquoi ne pas prendre une appli MDI ? Ce serait plus souple...

  10. #10
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Par défaut tous mes remerciements
    Je tiens à remercier tout les participants pour leur soutient et help
    Citation Envoyé par Mat.M Voir le message
    nmedouri pourquoi ne pas prendre une appli MDI ? Ce serait plus souple...
    mon application est déjà MDI mais j'essaye de varier un peu
    Merci quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  2. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 16h58
  3. Plusieurs scenes
    Par logramme dans le forum DirectX
    Réponses: 2
    Dernier message: 11/08/2002, 14h02
  4. Génerer automatiquement plusieurs fichier .doc
    Par brunovitch dans le forum QuickReport
    Réponses: 3
    Dernier message: 09/07/2002, 08h19
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo