
Попытался сделать код, в котором функция при активации имеет свойство быть цикличной. 1 дефект - после активации все работает как надо, но меню, через которое я активирую функцию, просто зависает и предлагает закрыть приложение.
Есть идеи, как мне задать цикличность этой функции иначе?
Если при выборе select = 10 нужно запустить цикл, а при повторном выборе 10 остановить - ваша метода не подходит, так как цикл останавливает выполнение основного кода.
Простой способ - цикл оформить в отдельном потоке, который захватывает переменную feature10 и управляется ей. Но раз вы полный дуб - у вас это не получится...
Для одного потока все еще сложнее - нужно писать таймеры. Sleep для этого не подойдет. В общем - миссия не выполнима.
вот из-за таких как вы и ругают goto
В какой момент по твоему мнению в бесконечном цикле ( с использованием безусловного перехода ) изменяется условие для выхода?
:test
....
goto test;
Возможно надо метку "test" поднять на строчку выше (если ты хочешь добиться эффекта "true->false", "false->true" при каждой итерации).
P.S.
1)Использование "goto" не для выхода из множественной вложенности, да и тем более верх по коду... уууу... чуваак
2) Скорее всего тебе надо использовать не "goto", а "for (;;)" или "while(1)"/"while(true)" для бесконечного цикла.
Ваш код, который обеспечивает работу меню, выполняется в обработчике сообщений Windows. Вы не должны в этом обработчике выполнять длительные действия, тем более запускать бесконечный цикл -- интерфейс пользователя вполне ожидаемо зависнет.
Здесь 2 варианта:
-- либо использовать системные функции таймера, которые посылают специальное сообщение, обработку которого вы должны добавить (т. е. делать Modify или Restore по этим сообщениям);
-- либо запускать "мигание" в отдельном потоке (thread) (придется изучить, как их создавать). Тогда можно использовать и код наподобие вашего (хотя лучше без goto обойтись).
твой код уродливый, очевидно
case 10: // Switch
feature10 = !feature10;
if (feature10) { // Нужен цикл
hexPatches.Noclip.Modify();
usleep(1000000);
hexPatches.Noclip.Restore();
usleep(1000000); // этой функции
} else {
hexPatches.Noclip.Restore();
}
break;
}