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] Autre que GetWindowText et Control


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Par défaut [MFC] Autre que GetWindowText et Control
    Bonjour !
    Le petit noob en MFC vous salue bien

    Alors, voilà, mon petit problème :

    J'ai :
    • un champs "IDC_EDIT1" qui contient du texte

    • un champs "IDC_EDIT2" qui contient un nombre ( type double )

    • un contrôle "BUTTON"


    J'aimerais, en cliquant sur mon bouton, afficher le contenu des 2 champs.
    Alors, je vous arrête de suite, j'y arrive avec GetWindowText, ok mais il faut ensuite que je fasse une opération (genre multiplier par 2) avec la valeur du champs IDC_EDIT2 ce qui ne marche logiquement pas puisque il l'accueille comme étant du texte.
    Alors ma question à 100 balles : quelle est la fonction GetWindow permettant d'acquérir un champs et de le déclarer en tant que "double" ?

    J'ai essayé GetWindowValue, marche pas ( oui on essaie un peu n'importe quoi quand on connaît pas )

    Merci !!

  2. #2
    mat.M
    Invité(e)
    Par défaut
    C'est un problème de conversions pas de controles.
    Il suffit de récupérer le contenu des zones de textes avec GetWindowText dans un CString et convertir en double avec strtod.
    Pour réafficher , prendre CString::Format qui s'utilise comme printf du C
    strtod,
    All versions of the C run-time libraries.
    Convert strings to a double-precision value.

    double strtod(
    const char *nptr,
    char **endptr
    );
    double wcstod(
    const wchar_t *nptr,
    wchar_t **endptr
    );

    Les controles ne manipulent SEULEMENT que du texte sauf si avec ClassWizard il est déclaré en tant que valeur et non controle.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Par défaut
    strok ? Ok, je vais chercher le synopsis de celle là. Merci ^^

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Gibou
    strok ? Ok, je vais chercher le synopsis de celle là. Merci ^^
    Pardon c'était strtod

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Dans la FAQ est indiquée la méthode correcte en C++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Par défaut
    mat.M > Aaaaah bon, parce-qu'après avoir trouvé le synopsis, je comprenais pas vraiment en quoi ça allait m'aider strtok

    Miles > Ok, je vais aller lire ça, merci

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Par défaut
    Excuez moi mais je ne parviens toujours pas à mes fins.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	double valeur;
     
    	GetDlgItem(IDC_EDIT1)->GetWindowText(nom_objet);
    	GetDlgItem(IDC_EDIT2)->GetWindowText(prix_estime);
    	//changement de string en double
    	std::istringstream iss( "10" );
    	iss >> valeur;
    	//fin changement de string en double
    	valeur *= 2;
    	//changement de double en string pour l'affichage
    	std::string prix_estime = to_string( valeur );
    	//fin changement de double en string pour l'affichage
    	GetDlgItem(IDC_AFF_PRIX)->SetWindowText("Le prix estimé de l'objet \""+nom_objet+"\" est "+valeur+" €");
    Et ça me retourne cette erreur : "operator + est ambigu" sur la dernière ligne du code.

    ???

    Et si vous vous demandez pourquoi je n'ai pas utilisé strod, c'est juste parce-qu'il veut un char* en paramètre et la conversion de string en char* proposée dans la faq me retourne une erreur à propos de size() et c_str() qu'il ne reconnaît pas malgré les #include ...

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    nom_objet, c'est quoi ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Par défaut
    une variable déclarée dans la classe, tout comme prix_estime.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public:
    //la fonction dans laquelle ya mon code précédent
    	afx_msg void OnBnClickedCalculer();
    //variable associée par la suite au champs 1
    	CString nom_objet;
    //variable associée par la suite au champs 2
    	CString prix_estime;
    De ce côté là, tout va bien. La lecture du contenu des champs marche nickel.
    C'est juste que si je transforme pas prix_estime en double, je peux pas faire l'opération mathématique dont j'ai besoin dessus ...

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ah oui, ça ne peut pas marcher, on ne peut pas ajouter ainsi un nombre à une chaîne de caractères !
    Regarde dans la FAQ comment ils font ou alors attend lundi pour le nouveau tuto sur Boost où on parle de leur méthode - Boost.Conversion -

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/11/2010, 17h00
  2. Réponses: 1
    Dernier message: 01/07/2009, 17h41
  3. MFC, son équivalent sur des plateformes autre que Windows
    Par uranium-design dans le forum Visual C++
    Réponses: 7
    Dernier message: 03/11/2006, 16h32
  4. [MFC] Error: no data exchange control
    Par LeMafiozo dans le forum MFC
    Réponses: 5
    Dernier message: 16/01/2004, 20h23
  5. Rendre une disquette illisible par d'autres que moi
    Par kivoch dans le forum x86 16-bits
    Réponses: 8
    Dernier message: 26/12/2003, 22h49

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