Calcul d'un module dans une boite de dialogue [Résolu]

Signaler
Messages postés
34
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
12 juillet 2008
-
Messages postés
34
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
12 juillet 2008
-
Bonjour,

Je debute en programmation d'interface graphique et j'ai voulu réaliser
un petit programme pour calculer le module d'un nombre complexe.

Voici mon probleme:



J'utilise l'API Win32 pour faire une boite de dialogue contenant trois
contrôles Edit: un pour la partie réelle , un pour la partie imaginaire
et le troisieme pour afficher le resultat après calcul.

Voici la portion de code problématique:



LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)

{

int Select;

int entier1=GetDlgItemInt(Dlg, IDC_ENTIER1, NULL, FALSE);

int entier2=GetDlgItemInt(Dlg, IDC_ENTIER2, NULL, FALSE);

float resultat= sqrt(pow(entier1,2) + pow(entier2,2));

switch(message)

{

case WM_COMMAND:

Select=LOWORD(wParam);

switch(Select)

{

case IDCALCULER:

SetDlgItemInt(Dlg, IDC_RESULTAT, resultat, false);

return TRUE;

case IDQUITTER:

EndDialog(Dlg,Select);

PostQuitMessage(0);

return TRUE;

}

default:

return FALSE;

}

}



Le probleme est le suivant : La variable resultat est de type float or
dans mon code comme vous avez pu le constater SetDlgItemInt() sert à
afficher dans l'Edit du resultat un entier, ma question est : Quelle
fonction dois-je utiliser pour afficher un nombre décimal (float) ?

2 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
D'abord il faut mettre ton résultat dans une chaine, avec sprintf par exemple
Ensuite, tu utilises SetDlgItemText au lieu de SetDlgItemInt
Messages postés
34
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
12 juillet 2008

Merci beaucoup pour votre reponse vecchio56, j'ai réussis à afficher ce que je voulais grâce à sprintf().

Bonne continuation.









UltimAKnighT.