Вопрос Где находится main loop ImGui?

Начинающий
Статус
Оффлайн
Регистрация
27 Апр 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Попытался добавить проект своей пасты в пасту чьего-то меню с форума, и не могу понять где здесь находится main loop.

Как реализовывал ранее (без ImGui,только консоль)
В hack.h:
Код:
void thread_recoil_system() {
        while (true) {
            recoil_system();

            Sleep(1);
        }
    }
В main.cpp:
Код:
int main(){
#include<thread>

std::thread thread_a_b(&H_c::thread_ab, &hcs, &state, &coords);
return 0;
}
Каким методом я мог бы реализовать вызов чита используя ImGui меню?

Была идея сделать так:
В main.cpp (с ImGui):
Код:
 // Main loop
    MSG msg;
    ZeroMemory(&msg, sizeof(msg));
    while (msg.message != WM_QUIT){
        Hack hcs(&memory);

        hcs.recoil_system();
   }
Любые попытки, где бы то ни было, вызова while приводят к зависанию программы.

Прошу рассказать какой-нибудь рабочий метод реализации.
 
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции[?]
135
Поинты[?]
0
Попытался добавить проект своей пасты в пасту чьего-то меню с форума, и не могу понять где здесь находится main loop.

Как реализовывал ранее (без ImGui,только консоль)
В hack.h:
Код:
void thread_recoil_system() {
        while (true) {
            recoil_system();

            Sleep(1);
        }
    }
В main.cpp:
Код:
int main(){
#include<thread>

std::thread thread_a_b(&H_c::thread_ab, &hcs, &state, &coords);
return 0;
}
Каким методом я мог бы реализовать вызов чита используя ImGui меню?

Была идея сделать так:
В main.cpp (с ImGui):
Код:
 // Main loop
    MSG msg;
    ZeroMemory(&msg, sizeof(msg));
    while (msg.message != WM_QUIT){
        Hack hcs(&memory);

        hcs.recoil_system();
   }
Любые попытки, где бы то ни было, вызова while приводят к зависанию программы.

Прошу рассказать какой-нибудь рабочий метод реализации.
Используй отдельный поток для цикла
 
Начинающий
Статус
Оффлайн
Регистрация
27 Апр 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Используй отдельный поток для цикла
Когда пользуешься thread выдается следующая ошибка:
Ошибка C2664 "uintptr_t _beginthreadex(void *,unsigned int,_beginthreadex_proc_type,void *,unsigned int,unsigned int *)": невозможно преобразовать аргумент 3 из "unsigned int (__stdcall std:?:* const )(void *) noexcept" в "_beginthreadex_proc_type" example_win32_directx9

Вызванная в файле: ~\vs\VC\Tools\MSVC\14.28.29910\include\thread line 75

Поэтому я и принял решение не пользоваться thread.
Возможно я просто неверно им пользуюсь. . .
 
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции[?]
135
Поинты[?]
0
Когда пользуешься thread выдается следующая ошибка:
Ошибка C2664 "uintptr_t _beginthreadex(void *,unsigned int,_beginthreadex_proc_type,void *,unsigned int,unsigned int *)": невозможно преобразовать аргумент 3 из "unsigned int (__stdcall std:?:* const )(void *) noexcept" в "_beginthreadex_proc_type" example_win32_directx9

Вызванная в файле: ~\vs\VC\Tools\MSVC\14.28.29910\include\thread line 75

Поэтому я и принял решение не пользоваться thread.
Возможно я просто неверно им пользуюсь. . .
Как ты его используешь?
 
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции[?]
135
Поинты[?]
0
Код:
#include <thread>
#include <iostream>
#include <string>

void run(std::string threadName) {
  for (int i = 0; i < 10; i++) {
    std::string out = threadName + std::to_string(i) + "\n";
    std::cout << out;
  }
}

int main() {
  std::thread tA(run, "A");
  std::thread tB(run, "\tB");
  tA.join();
  tB.join();
}
Тебя не смущает в мейне инклюд?






Вот тебе пример использования thread из интернета
 
Начинающий
Статус
Оффлайн
Регистрация
27 Апр 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Код:
#include <thread>
#include <iostream>
#include <string>

void run(std::string threadName) {
  for (int i = 0; i < 10; i++) {
    std::string out = threadName + std::to_string(i) + "\n";
    std::cout << out;
  }
}

int main() {
  std::thread tA(run, "A");
  std::thread tB(run, "\tB");
  tA.join();
  tB.join();
}
Тебя не смущает в мейне инклюд?






Вот тебе пример использования thread из интернета
Боюсь мы с тобой друг-друга не поняли.

Когда я использую thread без ImGui, у меня все нормально.

Когда я подключаю к проекту ImGui у меня ошибка :
Ошибка C2664 "uintptr_t _beginthreadex(void *,unsigned int,_beginthreadex_proc_type,void *,unsigned int,unsigned int *)": невозможно преобразовать аргумент 3 из "unsigned int (__stdcall std:?:* const )(void *) noexcept" в "_beginthreadex_proc_type" example_win32_directx9

Вызванная в файле: ~\vs\VC\Tools\MSVC\14.28.29910\include\thread line 75
Вопрос в том, как починить эту ошибку. Либо узнать другой метод реализации.
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
как починить эту ошибку
Ты точно уверен что ты передаешь колбэк шаблона unsigned int (__stdcall*)(void*)?
Потому что у тебя виднеется std::* что-то там, будто ты передаешь туда функцию класса.
И кстати чел выше прав, #include нужно делать в начале файла вне всяких областей видимости, внутри main делать этого нельзя, отсюда и могут быть как раз ошибки что у тебя выше.
 
Начинающий
Статус
Оффлайн
Регистрация
27 Апр 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Ты точно уверен что ты передаешь колбэк шаблона unsigned int (__stdcall*)(void*)?
Потому что у тебя виднеется std::* что-то там, будто ты передаешь туда функцию класса.
И кстати чел выше прав, #include нужно делать в начале файла вне всяких областей видимости, внутри main делать этого нельзя, отсюда и могут быть как раз ошибки что у тебя выше.
Да инклюд понятно, на самом деле он не там находится, это я опечатался.

А ошибка С2664 срабатывает только когда подлючаешь <thread>.
На данный момент просто засунул все в таком виде. check_box отвечают за нажатые клавиши в меню.
Код:
static bool check_box[7];
. . .
while (msg.message != WM_QUIT){
   if (check_box[4] == true) {
        hcs.rh_h_c();

        Sleep(1);
  }
}
Работает ужасно.
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
Работает ужасно.
Там не должно быть слипов, а должна быть обработка сообщений и отрисовка, а сами функции либо по таймеру либо в отдельный поток, но тогда нужно будет синхронизировать чтение.
 
Сверху Снизу