Калкулатор Win32 app-не иска да извежда резултата

topchokt

Registered
Здравейте, колеги!
Имам да правя една курсова работа по програмни системи. Изискването е да направя калкулатор. Всичко добре. Почнах го, но запънах.
Та да обясня за какво става дума.
След като взема стойността от полето(за двете променливи) тя e char и за да извърша някакво действие трябва да е преобразувам във float(избрах float).
Та така взимам стойностите на променливите от полетата:
Код:
GetDlgItemText(hDlg,IDC_A,a,128);
GetDlgItemText (hDlg,IDC_B,b,128);
Съответно така ги преобразувам във float:
Код:
printf(a,"%.3f", a_a);   
printf(b,"%.3f", b_b);
След това извършвам операцията, в случая събиране:
Код:
res=a_a+b_b;
След това този резултата трябва да го преобразувам в char, за да мога да го върна в друго поле, така го правя:
Код:
sprintf(ress,"%f",res);
И после извеждам резултата в полето така:
Код:
SetDlgItemText(hDlg,IDC_RES,ress);
И проблемът е тук, че винаги ми връща 0.

Ето и целият код на функцията:
Код:
char a[10];
char b[10];
float a_a, b_b,res;
char ress[10];

LRESULT CALLBACK CALCULATOR(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		
			case WM_COMMAND:
			switch (LOWORD(wParam))
			{
				case IDOK:
			
				case IDCANCEL:
				EndDialog(hDlg, LOWORD(wParam));
				break;
				
				case IDC_PLUS:

GetDlgItemText(hDlg,IDC_A,a,128);
GetDlgItemText (hDlg,IDC_B,b,128);
printf(a,"%.3f", a_a);   
printf(b,"%.3f", b_b); 
res=a_a+b_b;
sprintf(ress,"%f",res);

SetDlgItemText(hDlg,IDC_RES,ress); 
				
					break;
					
			
				
			
			}

	
	}
    return FALSE;
}
Дайте някакви идеи къде ми е грешката?
 
Пробвай вместо char да си преобразуваш от float в string със stringstream. След това от стринг стрийма го запиши в стринг и просто като трети параметър подай myString.c_str(). Може да ти е по-лесно, ако ползваш breakpoints :)
 
HerpaMoTeH каза:
Пробвай вместо char да си преобразуваш от float в string със stringstream. След това от стринг стрийма го запиши в стринг и просто като трети параметър подай myString.c_str(). Може да ти е по-лесно, ако ползваш breakpoints :)
Мерси, колега, ама го направих с atof(), което преобразува char в double, което ми върши работа.
 

Back
Горе