C++ Вопрос Прозрачный бекграунд имгуи меню

Начинающий
Статус
Оффлайн
Регистрация
8 Окт 2021
Сообщения
52
Реакции[?]
2
Поинты[?]
1K
Всем вастап ребят , хочу сделать прозрачный бекграунд imgui menu , но есть одно но , нашел код но он только для консоли , а мне для меню , можно ли как то его впихнуть в имгуи? не бейте пж я новичек, и можно пж не писать типо альфу поменяй это поменяй и все будет , нужно именно как в этом меню :)

Сам код
Код:
#include <iostream>
#include <windows.h>

typedef enum WINDOWCOMPOSITIONATTRIB {
    WCA_UNDEFINED,
    WCA_NCRENDERING_ENABLED,
    WCA_NCRENDERING_POLICY,
    WCA_TRANSITIONS_FORCEDISABLED,
    WCA_ALLOW_NCPAINT,
    WCA_CAPTION_BUTTON_BOUNDS,
    WCA_NONCLIENT_RTL_LAYOUT,
    WCA_FORCE_ICONIC_REPRESENTATION,
    WCA_EXTENDED_FRAME_BOUNDS,
    WCA_HAS_ICONIC_BITMAP,
    WCA_THEME_ATTRIBUTES,
    WCA_NCRENDERING_EXILED,
    WCA_NCADORNMENTINFO,
    WCA_EXCLUDED_FROM_LIVEPREVIEW,
    WCA_VIDEO_OVERLAY_ACTIVE,
    WCA_FORCE_ACTIVEWINDOW_APPEARANCE,
    WCA_DISALLOW_PEEK,
    WCA_CLOAK,
    WCA_CLOAKED,
    WCA_ACCENT_POLICY,
    WCA_FREEZE_REPRESENTATION,
    WCA_EVER_UNCLOAKED,
    WCA_VISUAL_OWNER,
    WCA_LAST,
} WINDOWCOMPOSITIONATTRIB;

typedef struct WINDOWCOMPOSITIONATTRIBDATA {
    WINDOWCOMPOSITIONATTRIB Attrib;
    PVOID pvData;
    SIZE_T cbData;
} WINDOWCOMPOSITIONATTRIBDATA;

typedef enum ACCENT_STATE {
    ACCENT_DISABLED,
    ACCENT_ENABLE_GRADIENT,
    ACCENT_ENABLE_TRANSPARENTGRADIENT,
    ACCENT_ENABLE_BLURBEHIND,
    ACCENT_INVALID_STATE
} ACCENT_STATE;

typedef struct ACCENT_POLICY {
    ACCENT_STATE AccentState;
    DWORD AccentFlags;
    DWORD GradientColor;
    DWORD AnimationId;
} ACCENT_POLICY;

typedef BOOL(WINAPI* pfnSetWindowCompositionAttribute)(HWND, WINDOWCOMPOSITIONATTRIBDATA*);
static auto SetWindowCompositionAttribute = (pfnSetWindowCompositionAttribute)GetProcAddress(LoadLibrary(L"user32.dll"), "SetWindowCompositionAttribute");

int main() {
    HWND hWnd = GetConsoleWindow();
    HANDLE hStd = GetStdHandle(STD_OUTPUT_HANDLE);

    if (SetWindowCompositionAttribute) {
        ACCENT_POLICY accent = { ACCENT_ENABLE_BLURBEHIND, 0, 0, 0 };
        WINDOWCOMPOSITIONATTRIBDATA data;
        data.Attrib = WCA_ACCENT_POLICY;
        data.pvData = &accent;
        data.cbData = sizeof(accent);
        SetWindowCompositionAttribute(hWnd, &data);
    }

    
  

    CONSOLE_SCREEN_BUFFER_INFO csbi;
    GetConsoleScreenBufferInfo(hStd, &csbi);

    COORD scrollbar = { csbi.srWindow.Right - csbi.srWindow.Left + 1, csbi.srWindow.Bottom - csbi.srWindow.Top + 1 };
    SetConsoleScreenBufferSize(hStd, scrollbar);  // remove scroll bar

    for (int i = 0; i < 10; i++)
        std::cout << "hello world!" << std::endl;

    
}
1693120677795.png
 
Начинающий
Статус
Оффлайн
Регистрация
3 Окт 2020
Сообщения
9
Реакции[?]
1
Поинты[?]
1K
Стили??? Color[ImGuiCol_WindowBg] = ImColor(18, 18, 18, 255); вместо 255, 0 ставь или 0.5 и будет тебе радость
 
profitprogrammer
Участник
Статус
Оффлайн
Регистрация
13 Дек 2020
Сообщения
915
Реакции[?]
195
Поинты[?]
73K
Пользователь
Статус
Оффлайн
Регистрация
17 Янв 2020
Сообщения
382
Реакции[?]
63
Поинты[?]
2K
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2022
Сообщения
89
Реакции[?]
22
Поинты[?]
4K
Эксперт
Статус
Оффлайн
Регистрация
14 Июл 2019
Сообщения
1,106
Реакции[?]
497
Поинты[?]
33K
поздравь меня пж у мя получилось а я думал нереал !!

Посмотреть вложение 258455
ура, у меня тоже получилось
1694355351767.png
Он же написал что хочет блюр
вот как тут на фоне Посмотреть вложение 258434
жизнь полна разочарований
1694355844219.png
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
8 Окт 2021
Сообщения
52
Реакции[?]
2
Поинты[?]
1K
Вроде нашел блюр рендер
Код:
void RenderBlur(HWND hwnd)
{
    struct ACCENTPOLICY
    {
        int na;
        int nf;
        int nc;
        int nA;
    };
    struct WINCOMPATTRDATA
    {
        int na;
        PVOID pd;
        ULONG ul;
    };

    const HINSTANCE hm = LoadLibrary("user32.dll");
    if (hm)
    {
        typedef BOOL(WINAPI* pSetWindowCompositionAttribute)(HWND, WINCOMPATTRDATA*);

        const pSetWindowCompositionAttribute SetWindowCompositionAttribute = (pSetWindowCompositionAttribute)GetProcAddress(hm, "SetWindowCompositionAttribute");
        if (SetWindowCompositionAttribute)
        {
            ACCENTPOLICY policy = { 3, 0, 0, 0 };
            WINCOMPATTRDATA data = { 19, &policy,sizeof(ACCENTPOLICY) };
            SetWindowCompositionAttribute(hwnd, &data);
        }
        FreeLibrary(hm);
    }
}
но у меня ругается на1694342177696.png
 
Эксперт
Статус
Оффлайн
Регистрация
14 Июл 2019
Сообщения
1,106
Реакции[?]
497
Поинты[?]
33K
Вроде нашел блюр рендер
Код:
void RenderBlur(HWND hwnd)
{
    struct ACCENTPOLICY
    {
        int na;
        int nf;
        int nc;
        int nA;
    };
    struct WINCOMPATTRDATA
    {
        int na;
        PVOID pd;
        ULONG ul;
    };

    const HINSTANCE hm = LoadLibrary("user32.dll");
    if (hm)
    {
        typedef BOOL(WINAPI* pSetWindowCompositionAttribute)(HWND, WINCOMPATTRDATA*);

        const pSetWindowCompositionAttribute SetWindowCompositionAttribute = (pSetWindowCompositionAttribute)GetProcAddress(hm, "SetWindowCompositionAttribute");
        if (SetWindowCompositionAttribute)
        {
            ACCENTPOLICY policy = { 3, 0, 0, 0 };
            WINCOMPATTRDATA data = { 19, &policy,sizeof(ACCENTPOLICY) };
            SetWindowCompositionAttribute(hwnd, &data);
        }
        FreeLibrary(hm);
    }
}
но у меня ругается наПосмотреть вложение 258462
L"user32.dll"
 
Начинающий
Статус
Оффлайн
Регистрация
8 Окт 2021
Сообщения
52
Реакции[?]
2
Поинты[?]
1K
спасибо заработало))
1694343469523.png
только вот меню как было черным так и осталось) просписал в меин RenderBlur(hWnd);
бля забыл поставить ноу беграунд
теперь меню просто прозрачное блюра нету 1694343742040.png
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
13 Мар 2022
Сообщения
89
Реакции[?]
22
Поинты[?]
4K
Сверху Снизу