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] afficher une bo�te de dialogue


Sujet :

MFC

  1. #1
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut [MFC] afficher une bo�te de dialogue
    Salut,

    1�re chose (sp�cial Farscape ) : j'ai regard� dans la FAQ, j'ai a priori trouv� dans la FAQ, mais mon truc yan na pas march�.

    j'ai un soucis. j'ai un CListBox et quand je double-clique sur un �l�ment, �a doit m'ouvrir une nouvelle bo�te de dialogue, mais au lieu de �a quand je double-clique j'ai un message d'erreur

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Debug Assertion Failed!
     
    Program: E:\Utilisateurs\...\MyOMEGA.exe
    File: winocc.cpp
    Line: 301
     
    For information on how your program can cause an assertion
    failure, see the Visual C++ documentation on asserts.
     
    (Press Retry to debug the application)
    Quand je double-clique sur un �l�ment du CListBox, je r�cup�re le texte, je cherche l'�l�ment (d'une liste perso d'entit�s) dont le nom correspond au texte (jusque l� je sais que �a marche), j'instancie une bo�te de dialogue de la classe perso CProcEntiteDlg (qui d�rive de CDialog, bien sur)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    m_ProcEntDlg = new CProcEntiteDlg(NULL,monEntite);
    //CProcEntiteDlg* m_ProcEntDlg; dans le .h
    voil� le proto de mon constructeur:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    CProcEntiteDlg(CWnd* pParent = NULL,so_entite * uneEntite = NULL);
    et je tente de l'afficher:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_ProcEntDlg->ShowWindow(SW_SHOW);
    je vous poste dans le message suivant les sources de ma classe CProcEntiteDlg et des impressions d'�cran.

    merci pour le coup de main

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    ProcEntiteDlg.h
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #if !defined(AFX_PROCENTITEDLG_H__4D88E660_D6DD_4202_994E_C547E04E9ED1__INCLUDED_)
    #define AFX_PROCENTITEDLG_H__4D88E660_D6DD_4202_994E_C547E04E9ED1__INCLUDED_
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // ProcEntiteDlg.h : header file
    //
     
    #include "OMEGA\bd_typ_t.h"
    #include "OMEGA\so_typ_t.h"
    #include "OMEGA\so_ext_t.h"
    #include "OMEGA\so_ent_t.h"
     
    /////////////////////////////////////////////////////////////////////////////
    // CProcEntiteDlg dialog
     
    class CProcEntiteDlg : public CDialog
    {
    // Construction
    public:
    	CProcEntiteDlg(CWnd* pParent = NULL,so_entite * uneEntite = NULL);   // standard constructor
     
    // Dialog Data
    	//{{AFX_DATA(CProcEntiteDlg)
    	enum { IDD = IDD_PROC_ENTITE };
    	CListCtrl	m_lstProcEntSfi;
    	CListCtrl	m_lstProcEntFi;
    	CListCtrl	m_lstProcEntEba;
    	//}}AFX_DATA
     
     
    // Overrides
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CProcEntiteDlg)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    	//}}AFX_VIRTUAL
     
    // Implementation
    protected:
     
    	so_entite * m_uneEntite;
     
    	// Generated message map functions
    	//{{AFX_MSG(CProcEntiteDlg)
    	virtual BOOL OnInitDialog();
    	//}}AFX_MSG
     
    	DECLARE_MESSAGE_MAP()
    };
     
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
     
    #endif // !defined(AFX_PROCENTITEDLG_H__4D88E660_D6DD_4202_994E_C547E04E9ED1__INCLUDED_)
    ProcEntiteDlg.cpp
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    // ProcEntiteDlg.cpp : implementation file
    //
     
    #include "stdafx.h"
    #include "myomega.h"
    #include "ProcEntiteDlg.h"
     
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
     
    /////////////////////////////////////////////////////////////////////////////
    // CProcEntiteDlg dialog
     
     
    CProcEntiteDlg::CProcEntiteDlg(CWnd* pParent,so_entite * uneEntite)
    	: CDialog(CProcEntiteDlg::IDD, pParent)
    {
    	//{{AFX_DATA_INIT(CProcEntiteDlg)
    		// NOTE: the ClassWizard will add member initialization here
    	//}}AFX_DATA_INIT
    	m_uneEntite = new so_entite(uneEntite);
    }
     
     
    void CProcEntiteDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CProcEntiteDlg)
    	DDX_Control(pDX, IDC_PROCENT_LISTE_SFI, m_lstProcEntSfi);
    	DDX_Control(pDX, IDC_PROCENT_LISTE_FI, m_lstProcEntFi);
    	DDX_Control(pDX, IDC_PROCENT_LISTE_EBA, m_lstProcEntEba);
    	//}}AFX_DATA_MAP
    }
     
     
    BEGIN_MESSAGE_MAP(CProcEntiteDlg, CDialog)
    	//{{AFX_MSG_MAP(CProcEntiteDlg)
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
     
    /////////////////////////////////////////////////////////////////////////////
    // CProcEntiteDlg message handlers
     
    BOOL CProcEntiteDlg::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
     
    	// TODO: Add extra initialization here
     
    	// Construction des colonnes des CListCtrl
    	for (int i=0;i<3;i++){
    		m_lstProcEntSfi.DeleteColumn(i);
    		m_lstProcEntFi.DeleteColumn(i);
    		m_lstProcEntEba.DeleteColumn(i);
    	}
     
    	m_lstProcEntSfi.InsertColumn(0,"Nom du cycle",LVCFMT_CENTER,100,0);
    	m_lstProcEntSfi.InsertColumn(1,"Classe",LVCFMT_CENTER,100,0);
    	m_lstProcEntSfi.InsertColumn(2,"Nom de l'outil",LVCFMT_CENTER,100,0);
     
    	m_lstProcEntFi.InsertColumn(0,"Nom du cycle",LVCFMT_CENTER,100,0);
    	m_lstProcEntFi.InsertColumn(1,"Classe",LVCFMT_CENTER,100,0);
    	m_lstProcEntFi.InsertColumn(2,"Nom de l'outil",LVCFMT_CENTER,100,0);
     
    	m_lstProcEntEba.InsertColumn(0,"Nom du cycle",LVCFMT_CENTER,100,0);
    	m_lstProcEntEba.InsertColumn(1,"Classe",LVCFMT_CENTER,100,0);
    	m_lstProcEntEba.InsertColumn(2,"Nom de l'outil",LVCFMT_CENTER,100,0);
     
    	// Remplissage des CListCtrl
     
    	return TRUE;  // return TRUE unless you set the focus to a control
    	              // EXCEPTION: OCX Property Pages should return FALSE
    }
    Fen�tre principale, le double-clic dans la liste du 1er onglet devrait ouvrir une bo�te de dialogue de la classe CProcEntiteDlg (attribut CProcEntiteDlg * m_ProcEntDlg de la bo�te de dialogue du 1er onglet)


    encore merci � ceux qui se pencheront sur mon probl�me.

  3. #3
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    au debug, il me dit qu'il plante sur le ASSERT :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BOOL CWnd::ShowWindow(int nCmdShow)
    {
    	ASSERT(::IsWindow(m_hWnd));
     
    	if (m_pCtrlSite == NULL)
    		return ::ShowWindow(m_hWnd, nCmdShow);
    	else
    		return m_pCtrlSite->ShowWindow(nCmdShow);
    }
    ya un truc dans mon code qu'est pas net!

  4. #4
    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
    Par d�faut
    salut,
    j'ai pas encore compris ce je venais faire dans l'histoire ....

    ton pb c'est toujours la meme histoire la fenetre sur laquelle tu fais ShowWindow n'existe pas graphiquement son handle de fichier est � null
    il faut que tu montres le code qui appel showwindow.

  5. #5
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par d�faut
    1) Vu que tu fais toujours reference � la FAQ, il a prefer� prendre les devant
    2) il manque un Create avant ton showwindow

  6. #6
    Nouveau candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    D�tails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Par d�faut
    Je pense qu'il faut appeler :au lieu :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_ProcEntDlg->ShowWindow(SW_SHOW);
    Ta dlg boite de dialogue sera modale...

  7. #7
    Nouveau candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    D�tails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Par d�faut
    Je pense qu'il faut appeler :au lieu :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_ProcEntDlg->ShowWindow(SW_SHOW);
    Ta dlg boite de dialogue sera modale...

  8. #8
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par farscape
    salut,
    j'ai pas encore compris ce je venais faire dans l'histoire ....

    ton pb c'est toujours la meme histoire la fenetre sur laquelle tu fais ShowWindow n'existe pas graphiquement son handle de fichier est � null
    il faut que tu montres le code qui appel showwindow.
    je mettrais le code Lundi, je ne l'ai pas sous la main (j'ai pris la r�solution d'�viter de bosser le WE )

    Citation Envoy� par la drogue c'est mal
    1) Vu que tu fais toujours reference � la FAQ, il a prefer� prendre les devant
    2) il manque un Create avant ton showwindow
    1) exact
    2) je vais voir � �a

    Citation Envoy� par J-Ma
    Je pense qu'il faut appeler :Code:
    m_ProcEntDlg->DoMadal();

    au lieu :Code:
    m_ProcEntDlg->ShowWindow(SW_SHOW);

    Ta dlg boite de dialogue sera modale...
    si ma nouvelle bo�te de dialogue est modale, je ne pourrais plus acc�der � la premi�re bo�te tant que celle-ci ne sera pas close. or j'aimerais avoir acc�s � la premi�re fen�tre et, par exemple pouvoir � nouveau double-cliquer dans la liste pour 1) fermer la fen�tre fille pr�c�dente 2) en rouvrir une nouvelle correspondant � l'item s�lectionn�.

    Merci

  9. #9
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    au passage, est-ce que vous sauriez comment faire pour que les colonnes de mon CListCtrl ne soit pas redimensionnables?

    A vot' bon coeur

  10. #10
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par farscape
    il faut que tu montres le code qui appel showwindow.
    voil� le code appelant. quand je double-clik sur ma liste, je r�cup�re le nom s�lectionn�, je cherche l'entit� portant ce nom dans une liste d'entit� et je tente d'ouvrir une boite de dialogue avec les caract�ristiques de l'entit�.
    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
    void CTab1::OnDblclkTab1ListeEntites() 
    {
    	// TODO: Add your control notification handler code here
     
    	// Récupération du nom d'entité double-cliqué
    	CString csItemText;
    	int nIndexItem = m_lstTab1ListEnt.GetCurSel();
    	m_lstTab1ListEnt.GetText(nIndexItem,csItemText);
     
    	// Recherche de l'entité dans la liste d'entités
    	li_entite * lesEntites;
    	lesEntites = new li_entite(GLO->getentite());
     
    	so_entite * monEntite;
    	monEntite = new so_entite(lesEntites->getpteur());
     
    	while (csItemText!=(CString)monEntite->getnom()){
    		lesEntites = lesEntites->getpteur_ap();
    		monEntite = lesEntites->getpteur();
    	}
     
    	// Ouverture de la boîte de dialogue "Processus Entite"
    	m_ProcEntDlg = new CProcEntiteDlg(NULL,monEntite);
    	m_ProcEntDlg->ShowWindow(SW_SHOW);
    }
    j'ai regard� pour CreateWindow
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    	BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
    	BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
    mais je ne sais pas quoi pass� en param�tre (je d�bute en VC++)
    merci pour votre aide

  11. #11
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    quelqu'un peut-il m'expliquer comment on affiche une bo�te de dialogue d�finit comme attribut d'une classe?

  12. #12
    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
    Par d�faut
    re,
    extrait MSDN:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //pDialog initialized to NULL in the constructor of CMyWnd class
       pDialog = new CMyDialog();
       //Check if new succeeded and we got a valid pointer to a dialog object
       if(pDialog != NULL)
       {
          BOOL ret = pDialog->Create(IDD_MYDIALOG,this);
          if(!ret)   //Create failed.
             AfxMessageBox("Error creating Dialog");
          pDialog->ShowWindow(SW_SHOW);
       }
       else
          AfxMessageBox("Error Creating Dialog Object");

  13. #13
    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
    Par d�faut
    re,
    sinon une methode pas mal pour faire une dialogue non modale:
    http://www.codeguru.com/Cpp/W-D/dislog/modelessdialogs/article.php/c4997/

  14. #14
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    merci bien, �a marche!

    bon ya fallu que je change 2/3 trucs dans mon code qui n'avait pas l'air d'�tre appr�ci�, mais je me suis d�brouill�

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Comment afficher une bo�te de dialogue ?
    Par verbose dans le forum Wicket
    R�ponses: 9
    Dernier message: 05/02/2010, 16h39
  2. Console dos : afficher une bo�te de dialogue
    Par mister3957 dans le forum Scripts/Batch
    R�ponses: 7
    Dernier message: 04/11/2008, 08h41
  3. R�ponses: 2
    Dernier message: 14/04/2008, 08h57
  4. [Flash] Afficher une bo�te de dialogue
    Par arsene555 dans le forum Flash
    R�ponses: 1
    Dernier message: 31/07/2007, 18h04
  5. R�ponses: 3
    Dernier message: 29/08/2003, 10h57

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