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 :

[MFC] Boite de dialogue


Sujet :

MFC

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut [MFC] Boite de dialogue
    Salutous,

    version: Visual C++ 6.0

    J'ai un petit probleme:
    J'ai creer une boite de dialogue et avec le wizard j'ai cree differentes fonction notamment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL CMyDlg::OnInitDialog()
    J'appelle ma boite de dialogue comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	CMyDlg* dlg = new CMyDlg();
    	dlg->DoModal();
    	delete dlg;
    Et le probleme c'est que je passe pas dans ma fonction OnInitDialog...
    Et du coup j'ai des variables non initialiser.
    Et si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	CMyDlg* dlg = new CMyDlg();
    	dlg->OnInitDialog(); //<--
    	dlg->DoModal();
    	delete dlg;
    Ca marche pas mieux car j'initialise une boite qui n'existe pas :S.

    Et la je comprend pas pourquoi il passe pas dedans(mis un point d'arret: il s'arrete pas).

    Voilavoila, si vous y voyez mieux que moi...

  2. #2
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    pourquoi tu as surchargé la methode !! elle est automatiquement crée pour toi !! en plus quand tu invoque DoModal() cela sous entend l'invocation de OnInitDialog()....Ceci dit donne nous le code et on esaiera de t'aider

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut
    Ben justement il y passe pas alors qu'il devrait!

    Et si je l'ai surcharger c'est parce que j'ai suivi un tuto et il faut initialiser certaine donnee a l'initialisation de la boite:
    Tout le code serait trop gros mais entre autre dans ma boite de dialogue j'ai un control "Picture:IDC_IMAGE" et je dois recuperer sa taille pour mettre l'image qui va bien.
    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	CRect rect;
    	// Get size and position of the picture control
    	GetDlgItem(IDC_IMAGE)->GetWindowRect(rect);
    [/code]

  4. #4
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 141
    Points : 95
    Points
    95
    Par défaut
    t'as essayé sans la surcharger au moins?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut
    ??
    J'ai pas compris OjBarbare!

    En fait dans le tuto il demande de creer la fonction avec le wizard.
    Par contre le programme plante, j'ai une runtime error avec ou sans la fonction oninitdialog()...

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut
    Sorry,
    J'avai mal coder une partie, j'ai corriger

  7. #7
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    Bon apparamment il ne s'agit pas de surcharge de methode ...je crois que tu as mal compris l'exemple...je t'explique et j'espere que je en me trompe pas :

    la methode OnInitDialog() est invoquée lorsque la methode DoModal() l'est aussi ...si tu veux initialiser tes varaibmes membres ( values ou controles) tu pourras el faire dans la meme methode qui a été generée pour toi ...mais tu ne feras tes initialisations seulement entre le bloc :

    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
     
     
    BOOL CVCADlg::OnInitDialog()
    {
     
     
     
    	CDialog::OnInitDialog();
     
     
    	// Définir l'icône de cette boîte de dialogue. L'infrastructure effectue cela automatiquement
    	//  lorsque la fenêtre principale de l'application n'est pas une boîte de dialogue
    	SetIcon(m_hIcon, TRUE);			// Définir une grande icône
    	SetIcon(m_hIcon, FALSE);		// Définir une petite icône
     
    	// mets ici tes initialisations :) 
     
     
    	variable1.ShowWindow(FALSE);
                    variable2.ShowWindow(TRUE);
     
    	//  .... etc 
     
     
     
    	return TRUE;  // retourne TRUE, sauf si vous avez défini le focus sur un contrôle
     
     
    }


    bien sur il faudra que ces variables soient declarées dans ton fichier header et que tu les a initialiser dans ton constructeur de la classe ( Cdialog ou autre )

    Si ca marche pas donne nous ton bout de code et on pourra t'aider

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut
    Merci!
    C'est bon j'ai reussi

    Mais maintenant j'ai un autre probleme par rapport a l'opengl... mais c'es une autre histoire

  9. #9
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    quel opengl ? raconte!

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Points : 240
    Points
    240
    Par défaut


    Je veut bien j'ai ouvert lance un nouveau post:
    sinon le probleme c'est que opengl dessine mais que je ne le vois pas.
    Voila le lien du post:
    http://www.developpez.net/forums/viewtopic.php?t=458522
    Et la je bloque...

Discussions similaires

  1. [MFC] Boite de dialogue d'ouverture
    Par Cirdan Telemnar dans le forum MFC
    Réponses: 2
    Dernier message: 20/07/2006, 09h45
  2. [MFC] Boite de dialogue qui se lance pas
    Par kacedda dans le forum MFC
    Réponses: 4
    Dernier message: 08/03/2006, 10h37
  3. [MFC]Boites de dialogues indépendantes
    Par klarky88 dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 18h50
  4. Réponses: 3
    Dernier message: 17/06/2004, 16h59
  5. OpenGL - MFC Boite de dialogue
    Par cybertigre dans le forum OpenGL
    Réponses: 3
    Dernier message: 15/04/2004, 16h09

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