Показать сообщение отдельно

  #6  
Старый 30.10.2023, 18:44
Basedbounty
Участник форума
Регистрация: 25.11.2021
Сообщений: 198
С нами: 2351419

Репутация: 48
По умолчанию

Всем привет! я хочу спросить о моей проблеме в imgui на c++. Суть проблемы такова - У меня имеется две кнопки - start, stop. Start отвечает за начало цикла, а stop заканчивает его. Код в цикле который выполняется при кнопке Stop вызывает у меня проблему, если мне надо в коде того цикла заморозить функцию через Sleep - замораживается все imgui, и соответственно я не могу нажать на кнопку stop. Если что-либо не понятно - могу рассказать более подробно. Кусок кода ниже.

с++:





Код:
bool
running
=
false
;
void
gui
::
Render
(
)
noexcept
{
ImGui
::
SetNextWindowPos
(
{
0
,
0
}
)
;
ImGui
::
SetNextWindowSize
(
{
WIDTH
,
HEIGHT
}
)
;
ImGui
::
Begin
(
"test"
,
&
isRunning
,
ImGuiWindowFlags_NoResize
|
ImGuiWindowFlags_NoSavedSettings
|
ImGuiWindowFlags_NoCollapse
|
ImGuiWindowFlags_NoMove
)
;
if
(
!
running
&&
ImGui
::
Button
(
"Start"
)
)
{
running
=
true
;
printf
(
"Начало вывода текста.\n"
)
;
}
if
(
running
&&
ImGui
::
Button
(
"Stop"
)
)
{
running
=
false
;
printf
(
"Конец вывода текста.\n"
)
;
}
if
(
running
)
// будет выводится вечно, пока running не станет false, так как меню отрисовывается каждый кадр, отсюда и проверка будет происходить каждый кадр
{
printf
(
"Тут и происходит тот самый цикл после кнопки start"
)
;
Sleep
(
5000
)
;
}
ImGui
::
End
(
)
;
ImGui
::
Render
(
)
;
}


Пока 5 секунд в цикле не пройдут, я не могу нажать на stop, но и тут проблема, у меня есть доля секунды пока опять начнется цикл, и мне надо ожидать 5 секунд.
 
Ответить с цитированием