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 :

Ouvrir une seconde fiche "dialog"


Sujet :

MFC

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut Ouvrir une seconde fiche "dialog"
    Bonjour,

    je cherche comment creer et afficher une seconde fentre de dialogue,
    j'essai de faire comme ils disent ici : http://c.developpez.com/faq/vc/?page=CWnd#ShowWindow

    seulement MyWnd c'est quoi ?
    j'ai bien creer mon second dialog, jlui ai cree une classe,
    mais pas moyen de trouver son nom

    et si je cree une variable dessus, son type est int, bool... selon mon choix

    comment dois je faire ?

    merci

  2. #2
    Membre actif Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Points : 257
    Points
    257
    Par défaut
    Un peu plus de précisions STP.

    Exemple : Tu as une classe CMyDialog1 et une CMyDialog2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CMyDialog1::OnOK()
    {
       CMyDialoG2 * pDlg = new CMyDialog2();
       pDlg->DoModal();
       ...
       delete pDlg;
    }
    Affichera une boîte de dialogue par dessus celle courante...

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Ton projet est-il
    - basé sur une boite de dialogue (dialog-based) ?
    - SDI (simple document)?
    - MDI (multiple document)?
    :
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    je vois, il faut creer la seconde dynamiquement
    quand j'en ai besoin donc, c'est ca ?

    dans mon "Ressource View" j'ai fais "insert dialog", je pensais que du coup
    la fiche existerai de base,
    en fait, il faut donc que j'instancie la classe ?

    [edit] mon projet est basé sur une boite de dialogue

  5. #5
    Membre actif Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Points : 257
    Points
    257
    Par défaut
    Effectivement, le fait d'ajouter la resource va la créer pour l'application, uniquement pour les resources.

    Mais il te faut créer une classe qui lui sera associée par le classwizard pour pouvoir l'utiliser dans ton code. C'est ce qu'il y a de plus simple

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    J'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	DIALOG_LNG *F2 = new DIALOG_LNG();
     
    	for(i=0;i<nbFL;i++) 
    	{
    		F2->listbox1.AddString(csFirstLine[i]);
    	}
     
    	F2->DoModal();
     
    	delete F2;
    lbLangList est la variable associé à une listbox sur la seconde fiche,
    ce code plante

    Debug Assertion Failed!

    Program: ... documents\Visual Studio Projects\Digitick\Debug\Digt.exe
    File: f:\vs70builds\3077\vc\MFCATL\ship\atlmfc\include\afxwin2.inl
    Line: 692

    For information on how your program can cause an assertion
    failure, see the Visual C++ documentation on asserts.
    mon erreur se situe ou dans cela ?

    merci

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    quand je passe par une fonction dans la class de ma seconde fiche, c'est pareil, la meme erreur lors du AddString

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void DIALOG_LNG::AddItemInListBox(CString csItem)
    {
    	listbox1.AddString(csItem);
    }
    et l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	DIALOG_LNG *F2 = new DIALOG_LNG();
     
    	for(i=0;i<nbFL;i++) 
    	{
    		F2->AddItemInListBox(csFirstLine[i]);
    	}
     
    	F2->DoModal();
     
    	delete F2;
    pourtant, je pense que ma variable est bonne, jsuis passé par l'editeur : Add Variable et j'ai ce bout de code dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DDX_Control(pDX, IDC_LIST1, listbox1);

  8. #8
    Membre actif Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Points : 257
    Points
    257
    Par défaut
    Tu ne peux pas accéder à tes controles avant que le boite ne soit valide (apres le DoModal).

    Tu dois affecter la string a ajouter avant le DoModal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pMyDlg2->AddString(string);
    pMyDlg2->DoModal();
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void CMyDialog2::AddString(CString str)
    {
       m_strToAdd = str; // m_strToAdd est une donnée membre de CMyDialog2
    }
    Puis dans CMyDialog2, tu dois dériver le message ON_INIT_DIALOG:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Void CMyDialog2::OnInitDialog()
    {
       ... 
       listBox1.AddString(m_strToAdd); 
    }
    Et eventuellement gérer une map de string a ajouter si tu en veux plus...

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    euh j'ai repondu a cette meme question cette semaine ...

    http://www.developpez.net/forums/viewtopic.php?t=418374

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

Discussions similaires

  1. Problème ActionListener pour ouvrir une seconde fenêtre
    Par jesuislibre15 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 15/04/2012, 02h02
  2. [XCode] Ouvrir une seconde fenêtre (appli MAC)
    Par synolog dans le forum XCode
    Réponses: 2
    Dernier message: 08/02/2012, 12h57

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