Calcul d'un module dans une boite de dialogue

Résolu
UltimAKnighT Messages postés 34 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 12 juillet 2008 - 7 mai 2006 à 11:34
UltimAKnighT Messages postés 34 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 12 juillet 2008 - 7 mai 2006 à 12:21
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 mai 2006 à 11:44
D'abord il faut mettre ton résultat dans une chaine, avec sprintf par exemple
Ensuite, tu utilises SetDlgItemText au lieu de SetDlgItemInt
3
UltimAKnighT Messages postés 34 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 12 juillet 2008
7 mai 2006 à 12:21
Merci beaucoup pour votre reponse vecchio56, j'ai réussis à afficher ce que je voulais grâce à sprintf().

Bonne continuation.









UltimAKnighT.
0
Rejoignez-nous