Малко помощ с Win32 App(Калкулатор )-не иска да извежда рез.

Компютри и интернет, аудио и видео, GSM, електроуреди и всяка друга техника, различна от автомобилната, обзавеждане
Потребителски аватар
ivanovkbg
Мнения: 850
Регистриран на: Вто 27 мар 2012 12:43
Автомобил: Passat B6
Двигател: BKP 2007 4Motion
Местоположение: София

Малко помощ с Win32 App(Калкулатор )-не иска да извежда рез.

Мнениеот ivanovkbg » Пон 18 мар 2013 13:21


Здравейте, колеги!
Надявам се някой да е работил с 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;
}

Дайте някакви идеи къде ми е грешката?




Върни се в “ОФФ-Топик - електроника, техника, обзавеждане”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 46 госта