ImGui курсор

Начинающий
Статус
Оффлайн
Регистрация
9 Дек 2017
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Делаю меню для internal чита dx11. Проблема в том, что выбирать в нем я могу только во время паузы, т.е. когда присутствует игровой курсор. Видел во многих меню можно выбирать и без паузы в игре. Как это сделать? На данный момент для взаимодействия с меню использую:
Код:
class IHooks
{
private:

    static HWND tWindow;

public:

    static BOOLEAN KeysPressed[256];

    static void Initialize(const char* Target);
    static void Restore();

};


LRESULT __stdcall HookedWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

WNDPROC OldWndProc = nullptr;

HWND IHooks::tWindow = nullptr;
BOOLEAN IHooks::KeysPressed[256] = { FALSE };

void IHooks::Initialize(const char* Target)
{
    tWindow = FindWindow(0, Target);
    if (tWindow) OldWndProc = (WNDPROC)SetWindowLongPtr(tWindow, GWLP_WNDPROC, (LONG_PTR)HookedWndProc);
}

void IHooks::Restore()
{
    SetWindowLongPtr(tWindow, GWLP_WNDPROC, (LONG_PTR)OldWndProc);
}


LRESULT __stdcall HookedWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    ImGuiIO& io = ImGui::GetIO();
    switch (uMsg)
    {
    case WM_LBUTTONDOWN:
        io.MouseDown[0] = true;
        break;
    case WM_LBUTTONUP:
        io.MouseDown[0] = false;
        break;
    case WM_RBUTTONDOWN:
        io.MouseDown[1] = true;
        break;
    case WM_RBUTTONUP:
        io.MouseDown[1] = false;
        break;
    case WM_MBUTTONDOWN:
        io.MouseDown[2] = true;
        break;
    case WM_MBUTTONUP:
        io.MouseDown[2] = false;
        break;
    case WM_MOUSEWHEEL:
        io.MouseWheel += GET_WHEEL_DELTA_WPARAM(wParam) > 0 ? 1.0f : -1.0f;
        break;
    case WM_MOUSEMOVE:
        io.MousePos.x = (signed short)(lParam);
        io.MousePos.y = (signed short)(lParam >> 16);
        break;
    case WM_KEYDOWN:
        if (wParam == 52)
            break;
        if (wParam < 256)
            io.KeysDown[wParam] = 1;
        break;
    case WM_KEYUP:
        if (wParam == 52)
            break;
        if (wParam < 256)
            io.KeysDown[wParam] = 0;
        break;
    case WM_CHAR:
        // You can also use ToAscii()+GetKeyboardState() to retrieve characters.
        if (wParam > 0 && wParam < 0x10000)
            io.AddInputCharacter((unsigned short)wParam);
        return true;

    }
    return CallWindowProc(OldWndProc, hWnd, uMsg, wParam, lParam);
}
 
null
Участник
Статус
Оффлайн
Регистрация
3 Окт 2014
Сообщения
700
Реакции[?]
498
Поинты[?]
0
ImGui::GetIO().MouseDrawCursor = ;//1 == есть курсор, 0 == нет курсора
 
Сверху Снизу