Вопрос Проблема с ImGui

Начинающий
Статус
Оффлайн
Регистрация
7 Июн 2022
Сообщения
6
Реакции[?]
0
Поинты[?]
0
в ксго сделал меню и с самого начала где можно выбрать где играть(с ботами или мм) меню открывается и закрывается идеально а когда запускаешь матч то тогда меню может открыться и не закрыться или наоборот на любом открытии меню(допустим когда открыл его 7 раз или 15), при этом меню работает нормально

Вот код
hooks.cpp:
long __stdcall hooks::EndScene(IDirect3DDevice9* device) noexcept
{
    if (!Variables::menu::init) {
        InitGui::InitImGui(device);
        Variables::menu::init = true;
    }
    if (GetKeyState(VK_INSERT) & 1)
    {
        Variables::menu::open = !Variables::menu::open;
    }
    if (Variables::menu::open) {
        menuDraw::render();
    }
    return EndSceneOriginal(device, device);
}
main.cpp:
static HWND window = NULL;
WNDPROC oWndProc;

void InitGui::InitImGui(IDirect3DDevice9* device) {

    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO();
    ImGui::CustomColors();
    Variables::ImFonts::LT25 = io.Fonts->AddFontFromMemoryTTF(Fonts::LobsterTwo_Regular, sizeof(Fonts::LobsterTwo_Regular), 10);
    Variables::ImFonts::LT25 = io.Fonts->AddFontFromMemoryTTF(Fonts::LobsterTwo_Regular, sizeof(Fonts::LobsterTwo_Regular), 25);
    Variables::ImFonts::LT40 = io.Fonts->AddFontFromMemoryTTF(Fonts::LobsterTwo_Regular, sizeof(Fonts::LobsterTwo_Regular), 40);
    io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
    ImGui_ImplDX9_Init(device);
    ImGui_ImplWin32_Init(window);
}

extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
        return true;

    return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}

BOOL CALLBACK EnumWindowsCallback(HWND handle, LPARAM lParam)
{
    DWORD wndProcId;
    GetWindowThreadProcessId(handle, &wndProcId);

    if (GetCurrentProcessId() != wndProcId)
        return TRUE; // skip to next window

    window = handle;
    return FALSE; // window found abort search
}

HWND GetProcessWindow()
{
    window = NULL;
    EnumWindows(EnumWindowsCallback, NULL);
    return window;
}

DWORD WINAPI Setup(LPVOID lpParam)
{
    do
        window = GetProcessWindow();
    while (window == NULL);
    oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc);
    Variables::ImGuiPrg::oWndProc = oWndProc;
    Variables::ImGuiPrg::window = window;
    memory::Setup();
    interfaces::Setup();
    netvars::Setup();
    hooks::Setup();  

    while (!GetAsyncKeyState(VK_END))
        std::this_thread::sleep_for(std::chrono::milliseconds(150));

    hooks::Destroy();  

    FreeLibraryAndExitThread(static_cast<HMODULE>(lpParam), EXIT_SUCCESS);
}

BOOL APIENTRY DllMain(HMODULE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    if (fdwReason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hinstDLL);

        const HANDLE hThread = CreateThread(nullptr,NULL,Setup,hinstDLL,NULL,nullptr);

        if (hThread)
            CloseHandle(hThread);
    }

    return TRUE;
}
когда переместил из main.cpp в hooks.cpp ничего не изменилось

и еще если проверять _returnaddress в ендсцене то меню будет мигать и можно будет его открыть или закрыть при нажатии на кнопку вызова меню но это рандом
 
Сверху Снизу