Как правильно создать и использовать BITMAP для того чтобы в итоге получить прозрачное окно с непрозрачными объектами? К сожалению пример создания прозрачного окна с поддержкой непрозрачных объектов я найти не смог. Были другие примеры, например создание картинки через BITMAP, но у меня возникает крайне много вопросов "почему тут сделано так, а тут вот так".
Текущий код
#include <windows.h>
#include <gdiplus.h>
LRESULT CALLBACK eventHandler(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
{
// CreateWindow(L"button", L"test", WS_CHILD | WS_VISIBLE, 0, 0, 100, 20, hwnd, NULL, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL);
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
EndPaint(hwnd, &ps);
}
break;
case WM_DESTROY:
{
PostQuitMessage(0);
}
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiPlusToken;
Gdiplus::GdiplusStartup(&gdiPlusToken, &gdiplusStartupInput, nullptr);
WNDCLASS wc = { };
wc.hbrBackground = CreateSolidBrush(RGB(0x80, 0x0, 0xFF));
wc.lpfnWndProc = eventHandler;
wc.hInstance = hInstance;
wc.lpszClassName = L"test";
wc.hCursor = LoadCursor(0, IDC_ARROW);
RegisterClass(&wc);
int width = 148;
int height = 140;
int x = (GetSystemMetrics(SM_CXSCREEN) / 2) - (width / 2);
int y = (GetSystemMetrics(SM_CYSCREEN) / 2) - (height / 2);
HWND hwnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_TOOLWINDOW /*| WS_EX_TRANSPARENT */ | WS_EX_LAYERED, wc.lpszClassName, L"test", WS_POPUP, x, y, width, height, 0, 0, hInstance, 0);
if (hwnd)
{
SetLayeredWindowAttributes(hwnd, 0, 150, LWA_ALPHA);
ShowWindow(hwnd, nCmdShow);
MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
Gdiplus::GdiplusShutdown(gdiPlusToken);
return 0;
}
Пожалуйста, объясните мне как правильно это сделать. Какой функцией лучше создавать BITMAP? Как сделать так чтобы он был прозрачным? Как рисовать на нём?
В чём разница между следующими записями? Как правильно записать вектор в бинарный файл?
CodeBlocks по умолчанию все выводит в cmd но я хочу чтобы он выводил сообщения в более удобный для меня терминал - Windows Terminal, но свойство смены терминала...
Всем привет при компиляции нижеуказанного кода выскакивает ошибка сегментации, не могу понять почему она тут имеет место быть, и как её исправить,...