Пишу простейший калькулятор с помощью WinApi, когда происходит деление на 0 нужно вывести MessageBox с ошибкой. Но в калькуляторе есть функция auto-reresh, которая мгновенно считает результат без нажатия кнопки OK. Когда в режиме auto-refresh ввожу второй раз символ появляется окошко MessageBox(появляется бесконечный цикл) и потом не могу ввести символ. Как это можно исправить?(visual studio 2015)
int a = 0;
int b = 1;
int x = 0;
//////////
static BOOL OnCommand(WPARAM wParam, HWND hwnd)
{
auto controlID = LOWORD(wParam);
auto notification = HIWORD(wParam);
switch (controlID)
{
case IDC_NUMBER1:
switch (notification)
{
case EN_CHANGE:
a = GetDlgItemInt(hwnd, IDC_NUMBER1, &fError, fRelative);
return IfClicked(hwnd);
}
break;
case IDC_NUMBER2:
switch (notification)
{
case EN_CHANGE:
b = GetDlgItemInt(hwnd, IDC_NUMBER2, &fError, fRelative);
return IfClicked(hwnd);
}
}
//////////
static BOOL ProcessTestRadioButton(int a, int b, HWND hwnd)
{
auto checkState = SendMessageW(GetControl(IDC_ARITHMETIC), BM_GETCHECK, 0, 0);
if (checkState == BST_CHECKED)
{
ArithmeticCalculating(a, b, hwnd);
}
else
{
ComparativeCalculating(a, b, hwnd);
}
return TRUE;
}
//////////////
static BOOL ArithmeticCalculating(int a, int b, HWND hwnd)
{
auto testComboBox = GetControl(IDC_COMBO);
int selectedIndex = SendMessageW(testComboBox, CB_GETCURSEL, 0, 0);
switch (selectedIndex)
{
case 0:
x = a - b;
break;
case 1:
x = a * b;
break;
case 2:
if (b == 0)
{
MessageBoxW(_hDialog, L"Error!", L"The Message", MB_OK | MB_ICONSTOP);
return TRUE;
}
x = a / b;
break;
case 3:
x = a + b;
break;
}
SetDlgItemInt(hwnd, IDC_ANSWER, x, TRUE);
return TRUE;
}
Здесь не весь код. Заранее спасибо
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости