Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Создайте проект MFC Application (Приложение MFC) в Visual C++ и назовите его Calc. В окне MFC Application Wizard (Мастер приложенийMFC) измените следующие параметры:



Проект Calc.

Создайте проект MFC Application ( Приложение MFC ) в Visual C++ и назовите его Calc. В окне MFC Application Wizard ( Мастер приложенийMFC ) измените следующие параметры:

в разделе Application Type ( Тип приложения ) - установите тип приложения Dialog based ( На основе диалоговых окон ) и уберите флажок Использовать библиотеки с поддержкой Юникода. Щелкните по кнопке Finish (Готово).

Создайте такой калькулятор:

Кнопкам с цифрами 0, 1, 2, …9 присвойте идентификаторы: IDC_BUTTON0, IDC_BUTTON1, IDC_BUTTON2, …, IDC_BUTTON9. Для остальных кнопок выберем идентификаторы:

- + - IDC_BUTTON_PLUS;

- - - IDC_BUTTON_MINUS;

- = - IDC_BUTTON_ENTER;

- C - IDC_BUTTON_CLEAR;

-. - IDC_BUTTON_COMMA

Добавьте переменные в класс CCalcDlg:

private:

double accum; // аккумулятор

char oper; //операции +, -, =

BOOL f; // если f = true, то ждём первое число, а если f = false то ждём остальные числа

С окном редактирования калькулятора (Edit Control) свяжите переменную m_Number класса CString. Для переменной m_Number установите Category (Категория): Value.

Инициализацию переменных поместите в конструктор класса CCalcDlg:

CCalcDlg::CCalcDlg(CWnd* pParent /*=NULL*/)

CCalcDlg::CDialogEx(CCalcDlg::IDD, pParent)

{

m_Number = _T("0");

f = true;

oper = '=';

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

Создайте обработчики сообщений BN_CLICKED для кнопок:

void CCalcDlg:: OnBnClickedButton9()

{

if (f)

{

m_Number = '9';

f=false;

}

else m_Number += '9';

UpdateData(FALSE);

}

void CCalcDlg:: OnBnClickedButtonMinus()

{

//Надо запомнить предыдущую операцию,

// вывести результат на индикатор,

// запомнить предыдущую операцию и

// установить режим ожидания первой

// цифры нового числа

if (f) { oper = '-'; }

else

{

DoOper(); // выполнить предыдущую операцию

oper = '-';// запомнить текущую операцию

f = true;// ждём первую цифру нового числа

}

}

 

void CCalcDlg::DoOper()

{

// accum содержит результат предыдущей операции,

// oper - код операции, который надо выполнить.

// Операнд находится на индикаторе.

double numb;

numb = atof(m_Number); // Преобразовываем строку в вещественное число

switch(oper)

{

case '+': accum += numb; break;

case '-': accum -= numb; break;

case '=': accum = numb; break;

}

m_Number.Format("%f", accum); // Вещественное число accum преобразуется в строку и заносится в m_Number.

UpdateData(FALSE);

}

void CCalcDlg:: OnBnClickedButtonЕnter()

{

if (f) { oper = '='; }

else

{

DoOper();

Oper = '=';

f = true;

}

}

void CCalcDlg:: OnBnClickedButtonСlear()

{

m_Number = '0';

accum = 0;

oper = '=';

f = TRUE;

UpdateData(FALSE);

}

 

void CCalcDlg::OnBnClickedButtonComma()

{

UpdateData(TRUE); //Пересылка из элементов управления в переменные, которые связанны с этими элементами управления

if (m_Number == '0') m_Number = "0.";

if (!strchr(m_Number,'.')) m_Number += '.';//Если нет десятичной точки, то добавляем точку

f = FALSE;

UpdateData(FALSE); //Пересылка из переменных в элементы управления, которые связанны с этими переменными



}

Самостоятельно. Добавить две кнопеи для умножения и деления.


Дата добавления: 2015-10-21; просмотров: 51 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Вычисления с комплексными числами на микрокалькуляторах | Калькулятор KK838B

mybiblioteka.su - 2015-2024 год. (0.009 сек.)