Другое С/С++ Вопрос - Ответ

vasiliy130198

Новичок
27
0
Можно ли с помощью ImGUI в окне сделать нечто схожее с тем, что на скрине ниже?
Тоесть чтобы в создаваемом цветном окне сначала показать текстуру как backgroundimage, а после поверх неё писать текст, показать горизонтальную линию, добавить другую картинку (уже НЕ backgroundimage), и так далее. В ImGUI встретил только функцию ImGui::Image, но она не подойдёт мне ведь..

Если в ImGUI такое невозможно сделать, то какие тогда есть другие похожие GUI либы, чтобы реализовать это? (gwen например, или другие)


XP8M2aDnFYQ.jpg
 

LUCHARE

Известный
Друг
545
688
Можно ли с помощью ImGUI в окне сделать нечто схожее с тем, что на скрине ниже?
Тоесть чтобы в создаваемом цветном окне сначала показать текстуру как backgroundimage, а после поверх неё писать текст, показать горизонтальную линию, добавить другую картинку (уже НЕ backgroundimage), и так далее. В ImGUI встретил только функцию ImGui::Image, но она не подойдёт мне ведь..

Если в ImGUI такое невозможно сделать, то какие тогда есть другие похожие GUI либы, чтобы реализовать это? (gwen например, или другие)


XP8M2aDnFYQ.jpg
  1. Рисуешь прозрачное окно без заголовка по размеру текстуры
  2. Рисуешь текстуру
  3. Рисуешь текст
  4. Риcуешь сепаратор
 

vasiliy130198

Новичок
27
0
  1. Рисуешь прозрачное окно без заголовка по размеру текстуры
  2. Рисуешь текстуру
  3. Рисуешь текст
  4. Риcуешь сепаратор

вот такое выходит, как на скрине..
код такой:
C++:
    IDirect3DTexture9 *Texture;
    D3DXCreateTextureFromFileA(g_pd3dDevice, "bg-ny-snow3.png", &Texture);
    {
        static float f = 0.0f;
        ImGuiWindowFlags window_flags = 0;
        window_flags |= ImGuiWindowFlags_NoTitleBar;
        window_flags |= ImGuiWindowFlags_ShowBorders;
        window_flags |= ImGuiWindowFlags_NoScrollbar;
        window_flags |= ImGuiWindowFlags_NoCollapse;
        window_flags |= ImGuiWindowFlags_MenuBar;

        ImGui::Begin(u8"Проверка", &bla, ImVec2(0, 0), 0.3f, window_flags);
        ImGui::Text(u8"Привет, мир!");
        ImGui::Image(Texture, ImVec2(200, 200));
        ImGui::Text(u8"123");

        ImGui::Separator();
        ImGui::End();
    }

p9a5Rw32Lp0.jpg


Текст сейчас ниже и выше самой картинки пишется, а мне нужно наоборот
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,260
1,742
вот такое выходит, как на скрине..
код такой:
C++:
    IDirect3DTexture9 *Texture;
    D3DXCreateTextureFromFileA(g_pd3dDevice, "bg-ny-snow3.png", &Texture);
    {
        static float f = 0.0f;
        ImGuiWindowFlags window_flags = 0;
        window_flags |= ImGuiWindowFlags_NoTitleBar;
        window_flags |= ImGuiWindowFlags_ShowBorders;
        window_flags |= ImGuiWindowFlags_NoScrollbar;
        window_flags |= ImGuiWindowFlags_NoCollapse;
        window_flags |= ImGuiWindowFlags_MenuBar;

        ImGui::Begin(u8"Проверка", &bla, ImVec2(0, 0), 0.3f, window_flags);
        ImGui::Text(u8"Привет, мир!");
        ImGui::Image(Texture, ImVec2(200, 200));
        ImGui::Text(u8"123");

        ImGui::Separator();
        ImGui::End();
    }

p9a5Rw32Lp0.jpg


Текст сейчас ниже и выше самой картинки пишется, а мне нужно наоборот

ты типа бесконечно вызываешь D3DXCreateTextureFromFileA?
 

LUCHARE

Известный
Друг
545
688
вот такое выходит, как на скрине..
код такой:
C++:
    IDirect3DTexture9 *Texture;
    D3DXCreateTextureFromFileA(g_pd3dDevice, "bg-ny-snow3.png", &Texture);
    {
        static float f = 0.0f;
        ImGuiWindowFlags window_flags = 0;
        window_flags |= ImGuiWindowFlags_NoTitleBar;
        window_flags |= ImGuiWindowFlags_ShowBorders;
        window_flags |= ImGuiWindowFlags_NoScrollbar;
        window_flags |= ImGuiWindowFlags_NoCollapse;
        window_flags |= ImGuiWindowFlags_MenuBar;

        ImGui::Begin(u8"Проверка", &bla, ImVec2(0, 0), 0.3f, window_flags);
        ImGui::Text(u8"Привет, мир!");
        ImGui::Image(Texture, ImVec2(200, 200));
        ImGui::Text(u8"123");

        ImGui::Separator();
        ImGui::End();
    }

p9a5Rw32Lp0.jpg


Текст сейчас ниже и выше самой картинки пишется, а мне нужно наоборот
ImGui::SetCursorPos для текста попробуй
 
  • Нравится
Реакции: vasiliy130198

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Тоже так думал, но проблема не исчезла после его переустановки.
Да и другие плагины отлично работают.
И мой работает, но только если его подгружать через СЕ или другие инжекторы
у меня такое уже было, это зависит от кода, а не аси лоадера
кидай код скажу в чем дело
upd: быстрее блятб
 
Последнее редактирование:

LUCHARE

Известный
Друг
545
688
у меня такое уже было, это зависит от кода, а не аси лоадера
кидай код скажу в чем дело
upd: быстрее блятб
C++:
#include <windows.h>

LONG PrevWndProc = NULL;

LRESULT CALLBACK myWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_KEYUP && wParam == VK_F11) {
        MessageBoxA(NULL, "u are retard", "lel", MB_OK); // тут типо супер секретный код
    }
    return CallWindowProcA((WNDPROC) PrevWndProc, hWnd, uMsg, wParam, lParam);
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH) {
        PrevWndProc = SetWindowLongA(FindWindowA(NULL, "GTA: San Andreas"), GWL_WNDPROC, (LONG) myWndProc);
    }
    if (dwReason == DLL_PROCESS_DETACH) {
        SetWindowLongA(FindWindowA(NULL, "GTA: San Andreas"), GWL_WNDPROC, PrevWndProc);
    }
    return TRUE;
}
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
он то работает, но до загрузки сампа
ибо после загрузки сампа название окна меняется на GTA:SA:MP тут короче такую хуйню делай
создавай асинхронный поток, и в нем в цикле проверяй равенство stSAMP с нулем, если не равны - самп загружен
 

LUCHARE

Известный
Друг
545
688
он то работает, но до загрузки сампа
ибо после загрузки сампа название окна меняется на GTA:SA:MP тут короче такую хуйню делай
создавай асинхронный поток, и в нем в цикле проверяй равенство stSAMP с нулем, если не равны - самп загружен
Я в одиночке его запускаю, лол
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну тогда хезе
мб оно и работает, попробуй на другую кнопку сделать
 

SR_team

like pancake
BH Team
4,720
6,376
C++:
#include <windows.h>

LONG PrevWndProc = NULL;

LRESULT CALLBACK myWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (uMsg == WM_KEYUP && wParam == VK_F11) {
        MessageBoxA(NULL, "u are retard", "lel", MB_OK); // тут типо супер секретный код
    }
    return CallWindowProcA((WNDPROC) PrevWndProc, hWnd, uMsg, wParam, lParam);
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH) {
        PrevWndProc = SetWindowLongA(FindWindowA(NULL, "GTA: San Andreas"), GWL_WNDPROC, (LONG) myWndProc);
    }
    if (dwReason == DLL_PROCESS_DETACH) {
        SetWindowLongA(FindWindowA(NULL, "GTA: San Andreas"), GWL_WNDPROC, PrevWndProc);
    }
    return TRUE;
}
плагины загружаются, когда еще нет окна игры, а ты ищешь HWND по окну.
 
  • Нравится
Реакции: LUCHARE