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 :

charger une CDialog d'une façon paramétrable


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut charger une CDialog d'une façon paramétrable
    salut,

    je dispose d'uine classe definie comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class MyClass
    {
     
    int a ;
    string b;
     
    }
    je me propose de passer cette classe comem parametre à une CDialog ( TestDlg dans mon cas) qui contient deja deux variables de controle chargées d'afficher a et b


    mais comment passer cette classe ? dois je surcharger le constructeur de TestDlg ?

    merci

  2. #2
    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
    pourquoi pas ...

  3. #3
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    donc tu suggere que j'impelemente un autre constructuer prenant en parametre ma classe et comme ca je recupere les valauers ...bon! mais c'est dans quelle fonction que ej dosi y injecter les valauers dans les variables memebres correpondantes ! est ce la fonction OnInitDialog()?

  4. #4
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    voiçi ce que j'ai implementé

    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
     
     
    // mon deuxieme constructeur
    CVCADlg::CVCADlg(CCard a )
    {
    	CVCADlg::m_CCardCurrent =  a;
    }
     
     
    // ce qui suit est generé par VS
    CVCADlg::CVCADlg(CWnd* pParent /*=NULL*/)
    	: CDialog(CVCADlg::IDD, pParent)	
    	, m_num_cedula(_T(""))
    	, m_TotalCards_V(0)
    	, m_CheckedCards_V(0)
    	, m_RemainingCards_V(0)
    	, m_FBC_V(_T(""))
    	, m_NumCedula_V(_T(""))
    {
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
     
    }
    mais y a t il un moyen d'en avoir un seul qui prend en compte à la fois ma classe en initialisant les varaibles ? je veux dire comment combiner les deux en un seul!!

  5. #5
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    j'ai instancié mon CDialog comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    CCard m_CurrentCard =  m_CCardList->CurrentCardList.GetAt(0);  
    CWinApp::InitInstance();
    AfxEnableControlContainer();
    SetRegistryKey(_T("Applications locales générées par AppWizard"));
     
      	// debut de traitement des fiches
     
     
    	CVCADlg dlg(m_CurrentCard);	 
    	m_pMainWnd = &dlg;
    	INT_PTR nResponse = dlg.DoModal();
    au lieu de ce qui etait fonctionnel avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    CWinApp::InitInstance();
    AfxEnableControlContainer();
    SetRegistryKey(_T("Applications locales générées par AppWizard"));
     
      	// debut de traitement des fiches
     
     
    	CVCADlg dlg();	 
    	m_pMainWnd = &dlg;
    	INT_PTR nResponse = dlg.DoModal();
    et ca me donen cette erreur runtimedans la fonction doModal()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INT_PTR CDialog::DoModal()
    {
    // can be constructed with a resource template or InitModalIndirect
    	ASSERT(m_lpszTemplateName != NULL || m_hDialogTemplate != NULL ||
    		m_lpDialogTemplate != NULL);
    pourquoi ?

    ce n'est pas le bon constructeur il parait n'est ce pas!!!!

  6. #6
    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
    bah c'est pas compliqué lol:
    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
     
    class CVCADlg:: public CDialog
    {
    public:
     
    CVCADlg(CCard a ,CWnd* pParent =NULL);
    };
     
    // ce qui suit est generé par VS
    CVCADlg::CVCADlg(CCard a,CWnd* pParent /*=NULL*/)
       : CDialog(CVCADlg::IDD, pParent)   
       , m_num_cedula(_T(""))
       , m_TotalCards_V(0)
       , m_CheckedCards_V(0)
       , m_RemainingCards_V(0)
       , m_FBC_V(_T(""))
       , m_NumCedula_V(_T(""))
      ,  m_CCardCurrent(a)
    {
       m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
     
    } 
    CVCADlg dlg(m_CurrentCard);   
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.DoModal()
    voila.


  7. #7
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    pourrais ej dans ce acs faire ca :

    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
     
    class CVCADlg:: public CDialog 
    { 
    public: 
     
    CVCADlg(CCard a ,CWnd* pParent =NULL); 
    }; 
     
    // ce qui suit est generé par VS 
    CVCADlg::CVCADlg(CCard a,CWnd* pParent /*=NULL*/) 
       : CDialog(CVCADlg::IDD, pParent)    
       , m_num_cedula(_T("")) 
       , m_TotalCards_V(0) 
       , m_CheckedCards_V(0) 
       , m_RemainingCards_V(0) 
       , m_FBC_V(_T("")) 
       , m_NumCedula_V(_T("")) 
      ,  m_CCardCurrent(a) 
    { 
       m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
     
       // partie ajoutée 
     
      CVCADlg::m_FBC_V = a.getFBC(); // ca retourne le meme type oui :)
     CVCADlg::m_num_cedula = a.getnum_cedula(); // ici aussi 
     
    } 
    CVCADlg dlg(m_CurrentCard);    
    m_pMainWnd = &dlg; 
    INT_PTR nResponse = dlg.DoModal()
    en d'autre terme initilaiser les variables de controle dans le constructeur de la classe de façon a ce qu'elles soient affichées quand j'invvoque le Cdialog correpondant!!


  8. #8
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    c'est bon je confirme ....ca marche sans probleme !!

    mais cependant il me reste une petite anomalie..au fait je voudrais que dans el constructeur aussi je desactive quelques composants ( exemple un CEdit qui doit etre invisible, un Bouton aussi..etc...) cependant je ne sais pas comment acceder à ces composants et bien sur a leurs proprietes!! tout ce que je vois c'est leur ID dans la boite de proprietes du VS!!

  9. #9
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 292
    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 292
    Billets dans le blog
    2
    Par défaut
    Ce sont des composants crées dynamiquement ou statiquement (via l'éditeur de ressources) ?

  10. #10
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    les composants par defauts offerts par VS2003 !!

    moi je suis entrain d'utiliser MFC comme type de projet et C++ bien sur !! mais sous VS2003 ...et j'ai constaté que certains composants sont presenst et grisés !! meme si ej les ajoute ils sont grisés!! ca me prive d'un bon nombre de composabts !!


  11. #11
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 292
    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 292
    Billets dans le blog
    2
    Par défaut
    Attend 2 secondes, tu confonds tout là, et du coup je n'y comprend rien...

    Citation Envoyé par jlassira
    les composants par defauts offerts par VS2003 !!
    Cela ne répond pas à ma question. Tu peux très bien utiliser les composants par défaut de la MFC de façon dynamique. Ce que je voulais savoir, c'est comment tu les a inclu dans ton projet: en tapant le code uniquement, ou en utilisant l'éditeur de ressource?

    Citation Envoyé par jlassira
    moi je suis entrain d'utiliser MFC comme type de projet
    MFC n'est pas un type de projet. Il s'agit d'une bibliothèque (j'ai l'impression que cela ne te ferais pas de mal de te renseigner un peu sur ce qu'est une bibliothèque et ce qu'est la mfc. Google est ton ami ).

    Citation Envoyé par jlassira
    j'ai constaté que certains composants sont presenst et grisés !! meme si ej les ajoute ils sont grisés!! ca me prive d'un bon nombre de composabts !!
    Je ne comprends pas ce que tu dis là. Déjà, tu pourrais faire un effort: trop de fautes de frappe. Tes explications sont suffisemment confuses, si en plus tu ne fais pas un petit effort de présentation

  12. #12
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    tu as raison et merci pour tes remarques ...

    bon j'ajoute mes composants en utilisant l'editeur des ressources ( composants.Net Framework et Composants COM) ..si je veux ajouter certains composants du Framework .Net je les trouve deja cochés et meme si je les coches à nouveau en esperant les integrer ils sont toujours grisés!! ( exemple le composants Panel car j'en ai vraiement besoin )

    est ce un probleme de version de VS? jusuque la je n'ai pas eu de problemes avec l'environnement mais je viens de decouvrir cette petite anomalie concernant les composants!!

    pour les composants COM pas de problemes jusqu'a maintenant!

  13. #13
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 292
    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 292
    Billets dans le blog
    2
    Par défaut
    Désolé, je ne sais pas ce que sont les "composants.Net Framework et Composants COM." ni le "composant Panel".

    Y-at-il un rapport avec les ActiveX? Avec les controles de base MFC? Comment les as-tu créés, précisément ?

  14. #14
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    VS offre des composants visibles à partir de son editeur de boites de dialogue.... je en crée rien j'utilise ces élements qui me sont offerts et je les insere dans mes Forms ( CDialog ou atre ) .... et certains de ces elements comme Panel sont desactivés chose qui m'a paru un peu anaormale!! voilà!!

    donc je em suis dit peut être parce que j'utilise MFC? je ne sais pas !!

  15. #15
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 292
    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 292
    Billets dans le blog
    2
    Par défaut
    C'est quoi Panel?

  16. #16
    Membre confirmé Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Par défaut
    un composant ou element si tu veux qui peut contenir d'autre elements...j'ai trouve le group box ( qui en em sert pas dans mon cas ) mais pas l'element "panel"

  17. #17
    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
    l'element panel n'existe pas avec les MFC .
    voir eventuellement ce post:
    http://www.developpez.net/forums/vie...429201#2429201

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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