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] Problème de pointeur !!


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 14
    Points
    14
    Par défaut [MFC] Problème de pointeur !!
    Bonjour,
    J'ai une fenêtre de dialogue dans laquelle je rentre une valeur dans un label.En confirmant celle-ci je voudrait faire apparaître la valeur saisie dans du texte de la fenêtre.
    Pour celà j'ai créer deux variables membres pour ces deux valeurs et un pointeur sur la 1ère dans l'onglet "class info" de "class Wizard".
    J'ai un problème à la compilation.Le compilateur m'indique une erreur sur la ligne de déclaration du pointeur qu'il a déclaré automatiquement dans le ".h".
    Sinon comment peut-on convertir un unsigned int en string ?
    Est-ce qu'un transtipage peut-être une solution ?
    Merci.

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 196
    Points : 165
    Points
    165
    Par défaut
    Salut

    Pour convertir un int en chaine :

    #include <stdio.h>
    int sprintf ( char *chaine, const char *format [,arguments...]);


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void main(){
     
         int num = 421;
         char monfichier[40+1];
     
         sprintf ( monfichier, "%d", num );
     
    }

    pour le reste j'ai rien compris !

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut
    Poste le bout de code qui provoque une erreur et le .H qui pose problème.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Je voudrais avoir accès à la variable m_vitesseC dans la classe CEnvoyerVitesse dans laquelle est créer le pointeur de façon auto.
    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
     
    [color=green]class CComfirmerVitesse : public CDialog
    {
    // Construction
    public:
    	CComfirmerVitesse(CWnd* pParent = NULL);   // standard constructor
    	//void setConfirmerVitesse(CEnvoyerVitesse * m_vitesse);
    // Dialog Data
    	//{{AFX_DATA(CComfirmerVitesse)
    	enum { IDD = IDD_CONFIRMER_VITESSE };
     
    	// variable à récupérer dans CEnvoyerVitesse 
                    CString	m_vitesseC;
    	//}}AFX_DATA
    ...
    ...[/color]
    Le compilateur me trouve un 10aine d'erreurs sur la ligne ou est déclaré le pointeur.
    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
     
    [color=green]class CEnvoyerVitesse : public CDialog
    {
    // Construction
    public:
    	CEnvoyerVitesse(CWnd* pParent = NULL);   // standard constructor
     
    // Dialog Data
    	//{{AFX_DATA(CEnvoyerVitesse)
    	enum { IDD = IDD_ENVOYER_VITESSE };
    	int		m_vitesse;
    	CComfirmerVitesse*	m_vitesseC;
    	//}}AFX_DATA[/color]
    ...
    ...
    Pourquoi cette erreur, et sinon comment puis-je accéder à la variable m_vitesseC dans la classe CEnvoyerVitesse ?
    Merci.
    [Merci de ne pas oublier les balises de code :FARSCAPE]

  5. #5
    Membre habitué
    Inscrit en
    Avril 2002
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 180
    Points : 157
    Points
    157
    Par défaut
    quelle sont les message d'erreur que le compilateur te retourne

    As-tu inclue le fichier d'entete de CConfirmeVitesse dans CEnvoyerVitesse

    pour quoi tes variable s'ont-telle declarer a l'interieur du groupe AFX_DATA ???

    j'aurai crue que le groupe AFX_DATA contenait que des membre referant a des object placer sur une boite de dialog mais je peux me tromper

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    error C2143: syntax error : missing ';' before '*'

    error C2501: 'CComfirmerVitesse' : missing storage-class or type specifiers

    error C2501: 'm_vitesseC' : missing storage-class or type specifiers

    L'include de CConfirmerVitesse est bien présent.
    Sinon est-ce que tu as une solutions pour utiliser les variables d'une autre classe (dans notre cas, celle de CConfirmerVitesse) ?

    Les variables déclarées sont effectivement des membres referant a des object placer sur une boite de dialog.
    m_vitesse correspond à un label et m_vitesseC à une zone texte.

  7. #7
    Membre habitué
    Inscrit en
    Avril 2002
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 180
    Points : 157
    Points
    157
    Par défaut
    il y a un truc que je pige pas

    si m_vitess est in label techeniquement son type ne devait-il pas etre CStatic ???
    et is m_vitesseC est une sone de text son type ne devrait-il pas etre CEdit
    a moin que la CConfirmeVitesse soit un controle ocx mais dans ce cas CConfirmeVitesse devrait erite de CWnd et nom de CDialog ???

    enfait moi je passe par le ClassWizard et l'onglet Member Variable pour mapper les object placer sur le formulaire

    pour pouvoir utiliser les variable de CConfirmeVitesse a partire de la classe CEnvoyVitesse, ce que tu peuc faire est de declarer en global un pointeur sur CConfirmeVitesse

    tu cree la boite de dialog non-mondal a partir de ce pointeur puis tu ne la detruit pas tanque tu as de besoin d'acceder a son contenu, tu utilise la methode ShowWindow(); pour afficher ou cacher la boite de dialog;

    lorsque tu veux rejoindre les information contenue sur la dialog tu fait

    extern CConfirmVitesse* m_vitessC

    m_vitesseC->member ou methode


    il y a surment d'autre facon de faire mais bon cette solution est relativement simple;

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2003
    Messages : 24
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par philippe V
    il y a un truc que je pige pas

    si m_vitess est in label techeniquement son type ne devait-il pas etre CStatic ???
    Tout dépend du type de variable que tu lui associes dans le ClassWizard, tu peux au choix associer un control ou une chaîne de caractère.

    Citation Envoyé par philippe V
    et is m_vitesseC est une sone de text son type ne devrait-il pas etre CEdit
    Idem.

    Citation Envoyé par acastor
    Sinon est-ce que tu as une solutions pour utiliser les variables d'une autre classe (dans notre cas, celle de CConfirmerVitesse) ?
    Oui, déclarer une fonction SetVitesse(CConfirmerVitesse *pConfVitesse) dans CEnvoyerVitesse, cette fonction initialisant une variable membre de type CConfirmerVitesse.

    Dans EnvoyerVitesse.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CConfirmerVitesse *m_pVitesse;
     
    void SetVitesse(CConfirmerVitesse *pConfVitesse) { m_pVitesse = pConfVitesse; };
    Dans ConfirmerVitesse.cpp, à l'endroit du DoModal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CEnvoyerVitesse dlgEnvoyer;
    dlgEnvoyer.SetVitesse(this);
    dlgEnvoyer.DoModal();
    Ta dialog CEnvoyerVitesse travaillera alors sur le même objet CConfirmerVitesse. C'est le principe du passage par pointeurs... cf. cours de C++.
    En revanche, s'il ne s'agit que de récupérer une chaîne de caractères, tu peux lui passer uniquement un pointeur sur ta chaîne de caractères, c'est beaucoup plus propre.

    Citation Envoyé par philippe V
    j'aurai crue que le groupe AFX_DATA contenait que des membre referant a des object placer sur une boite de dialog mais je peux me tromper
    Tu ne te trompes pas à mon avis, Visual place automatiquement ses variables associées aux contrôles des dialog à l'intérieur. On peut y toucher bien entendu même si a priori, il est plus propre de déclarer ses variables en dehors pour plus de lisibilité.
    Air'V

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/09/2007, 20h09
  2. [MFC]Problème de pointeur
    Par bubulle63 dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2006, 15h20
  3. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17
  4. [MFC] problème d'éxécution
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2004, 10h31
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

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