-
Автор темы
- #1
Всем вастап ребят , хочу сделать прозрачный бекграунд 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;
}