case WM_COMMAND: {
if (HIWORD(wParam) == BN_CLICKED) {
int buttonId = LOWORD(wParam);
HWND hButton = (HWND)lParam;
wchar_t buffer[256];
double moneyToAdd = 0.0;
switch (buttonId) {
// ... (другие кнопки)
case BUTTON_ID_SERVICE:
if(currentState != AppState::ServiceMode) {
ShowProductInfoDialog(hwnd, hInstance, products);
UpdateInfoLabel(hwnd, L"Сервисный режим");
currentState = AppState::ServiceMode;
}
break;
// ... (другие кнопки)
}
}
if (LOWORD(wParam) == BUTTON_ID_CLOSE_SERVICE)
{
currentState = AppState::WaitingForMoney;
}
return 0;
}
break;
в коде все портит. Выполняется первая проверка, не срабатывает, наверно, потому что currentState
не тот. А может, потому что у вас там еще break между уловными проверками расставлены. До проверки на BUTTON_ID_CLOSE_SERVICE код никогда не доходит.