MessageBox попадает в бесконечный цикл WinApi

402
26 февраля 2017, 08:55

Пишу простейший калькулятор с помощью 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; 
	}

Здесь не весь код. Заранее спасибо

READ ALSO
Найти отличное от других число

Найти отличное от других число

Есть последовательность различных int чиселНеобходимо эффективно найти любое int число, отличающееся от данных

369
C++ 17, std::experimental::any где?

C++ 17, std::experimental::any где?

Работаю в MSVC, набираю #include <experimental/ >, в выпадающем списке нет anyКак мне подключить этот хедер?

351
Достаточный для хранения 2x числа тип

Достаточный для хранения 2x числа тип

У меня есть числоКак получить тип, который может хранить это число, умноженное на 2, если число имеет не "максимальный" тип? Например, число...

273
Матрица как вектор векторов

Матрица как вектор векторов

Вот тут - http://rustackoverflow

316