Une calculatrice en C++ sous windows

Juan-Marco - 15 déc. 2001 à 16:29
cs_jpeg Messages postés 40 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 25 février 2004 - 17 déc. 2001 à 14:16
Bonjour à tous
Voila mon premier post sur ce forums
Je connais bien les boucles, les variables et les structures. Je connais un peut moins les classes.
Voila pour mon niveau global :big)
Je programme sous visual CPP
J'aimerai donc faire une calculatrice mais quelque chose de simple pour commencer...
Voila le problème. J'ai fait une boite de dialogue avec 2 edit box (IDC_euro et IDC_franc) et un bouton.
Ce que j'aimerai (et c'est d'ailleurs là tous l'interet de ce programme) c'est récuperer la valeur contenu dans l'un des edit box ; effectuer la conversion ; et placer le résultat dans l'autre edit box.
Voila ce que j'ai écrit
Pour l'instant, j'ai trouvé une fonction qui récupère un text dans une edit box

float franc, euro;//pour faire les calculs

GetDlgItemText(1000,m_euro);//recupere l'ID 1000 (edit box euro et le place dans m_euro.
//m_euro a été créer via classwizard dans V CPP
//il est de type Cstring a cause de la fonction que j'utilise
euro=atof(m_euro);//convertit en float
franc=euro*6.55957;//calcul

Et voila, je suis bloqué car je ne connais pas de méthode pour remettre mon float en texte. De toute manière c'est une méthode un peut tordu mais je suis obligé à cause de la fonction que j'utilise qui n'accepte que des char

J'ai aussi trouvé cette fonction
SetDlgItemText(1000,"123");
Qui mets 123 dans le champs euro de la fenetre

Le mieux ce serait d'avoir une fonction pour lire et une pour écrire 8-) mais je ne sais pas si cela existe.

Je vous remercie pour votre aide

3 réponses

J'ai trouvé cette solution mais je ne sait pas si elle est trés judicieuse. En tous cas, cela à l'air de marcher

float euro, franc;
char *temp, result[20];
int decimal, sign;
for (int i=0 ; i<20 ; i++)
result[i]='\0';
GetDlgItemText(1000,m_euro);
euro=atof(m_euro);
franc=euro*6.55957;

//_gcvt(franc,20,temp);
temp = _fcvt( franc, 2, &decimal, &sign );

for (i=0 ; i<decimal ; i++)
result[i]=temp[i];
strcat(result, ".");i++;
for(int j=0 ; j < 2 ; j++)
result[i+j]=temp[j+i-1];

SetDlgItemText(1001,result);

Votre Avis ???
0
setwindowtext() mais je suis pas sur
0
cs_jpeg Messages postés 40 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 25 février 2004 1
17 déc. 2001 à 14:16
Je pense qu'avec un sprintf, ça doit être plus facile :

float monfloat=FonctionRenvoyantUnFloat();
char texte[50];
sprintf(texte,"%f",monfloat);

et le tour est joué. En regardant dans les aides/manuels sur printf/sprintf, tu peux même trouver comment gérer les arrondis/troncatures....

j'espère que ça pourra t'aider
0
Rejoignez-nous