Как правильно создать и использовать 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? Как сделать так чтобы он был прозрачным? Как рисовать на нём?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости