C++ 实现不规则窗口:自定义形状窗口教程
在C++中,可以使用以下步骤将普通窗口变成不规则形状:
-
首先,需要准备一张具有透明背景的不规则形状的图片,该图片将被用作窗口的形状模板。可以使用诸如Photoshop等图像处理软件创建此图片。
-
在C++中,使用Win32 API创建窗口。创建窗口时,需要设置窗口的样式为'WS_POPUP',并且将窗口的透明属性设置为'WS_EX_LAYERED'。可以使用'CreateWindowEx'函数来创建窗口。
HWND hwnd = CreateWindowEx(
WS_EX_LAYERED,
szWindowClass,
szTitle,
WS_POPUP,
x, y,
width, height,
NULL,
NULL,
hInstance,
NULL
);
- 使用'SetLayeredWindowAttributes'函数将窗口设置为透明。该函数需要传入窗口句柄、透明颜色和透明度等参数。
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_COLORKEY);
- 使用'UpdateLayeredWindow'函数将形状模板应用到窗口上。该函数需要传入窗口句柄、设备上下文和窗口的位置等参数。
HDC hdc = GetDC(hwnd);
HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hbm = LoadBitmap(hInstance, L"path_to_bitmap.bmp");
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbm);
SIZE size = {width, height};
POINT ptSrc = {0, 0};
BLENDFUNCTION blend = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA};
UpdateLayeredWindow(hwnd, hdc, NULL, &size, hdcMem, &ptSrc, RGB(0, 0, 0), &blend, ULW_ALPHA);
SelectObject(hdcMem, hbmOld);
DeleteDC(hdcMem);
ReleaseDC(hwnd, hdc);
通过以上步骤,就可以将普通窗口变成不规则形状的窗口。
原文地址: https://www.cveoy.top/t/topic/qpy7 著作权归作者所有。请勿转载和采集!