Надявам се някой да е работил с C++ и да е правил Win32 App... Та имам да правя курсова работа по Програмни системи, заданието е да направя калкулатор. Нищо сложно по-принцип, ама нещо запецнах. Уж всичко точно, а не работи.
След като взема стойността от полето(за двете променливи) тя 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;
}
Дайте някакви идеи къде ми е грешката?