Как пофиксить курсор в imgui ?

Начинающий
Статус
Оффлайн
Регистрация
15 Сен 2020
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Такая проблема. Создал я говно менюшку, но при инжекте в игру(gta sa), стандартный курсор винды появляется по середине экрана. Как его скрыть ? Пробовал через "ImGui::GetIO().MouseDrawCursor = 0;" - не помогло.
Вторая проблема. Если свернуть игру и развернуть, то игра крашнется.
Третья проблема. Активирую я окно, но проблема в том, что игра держит курсор по серёдке и управлять менюшкой вообще не возможно.
Вот
Пожалуйста, авторизуйтесь для просмотра ссылки.
где наглядно видны эти баги. Помогите пж, уже второй день ищу по интернету как это исправить и ничего не помогает.
 
Начинающий
Статус
Оффлайн
Регистрация
15 Сен 2020
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Модератор форума
Модератор
Статус
Онлайн
Регистрация
19 Май 2018
Сообщения
954
Реакции[?]
1,067
Поинты[?]
20K
Начинающий
Статус
Оффлайн
Регистрация
20 Ноя 2018
Сообщения
70
Реакции[?]
12
Поинты[?]
0
if (menuOpen)
SetCursor(NULL); //отключает показ курсора виндоус, но от имгуи будет виден
 
Начинающий
Статус
Оффлайн
Регистрация
15 Сен 2020
Сообщения
4
Реакции[?]
0
Поинты[?]
0
if (menuOpen)
SetCursor(NULL);
Спасибо! Только в моём случае не (menuOpen), а (menuOpen == false). Только проблема. Курсор постоянно появляется в середине и управлять менюшкой не возможно, пока не открою меню где курсором можно управлять\двигать\что угодно делать.(Надеюсь я понятно объяснил).


Я тоже думал что из-за этого, но обновлять это лишний гемор. Придётся наверное всё-таки опять с ним повозиться.

upd.Вот так будет лучше.
C++:
SetCursor(NULL);

if (menuOpen == false) { ImGui::GetIO().MouseDrawCursor = 0; }

if (menuOpen) { ImGui::GetIO().MouseDrawCursor = 1; }
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
28 Апр 2018
Сообщения
541
Реакции[?]
132
Поинты[?]
4K
Используй хук setcursorpos
C++:
typedef BOOL(APIENTRY* oSetCursorPos)(int, int);
oSetCursorPos pSetCursorPos = NULL;

BOOL APIENTRY MJHook_SetCursorPos(int X, int Y)
{
    if (!menuOpen)
        return pSetCursorPos(X, Y);

    return TRUE;
}

HMODULE USER32 = GetModuleHandleA("USER32.dll");
pSetCursorPos = (oSetCursorPos)GetProcAddress(USER32, "SetCursorPos");

DetourAttach(&(LPVOID&)pSetCursorPos, (PBYTE)MJHook_SetCursorPos);
 
Начинающий
Статус
Оффлайн
Регистрация
15 Сен 2020
Сообщения
4
Реакции[?]
0
Поинты[?]
0
Сверху Снизу