在C++中,可以使用以下步骤将普通窗口变成不规则形状:

  1. 首先,需要准备一张具有透明背景的不规则形状的图片,该图片将被用作窗口的形状模板。可以使用诸如Photoshop等图像处理软件创建此图片。

  2. 在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
);
  1. 使用'SetLayeredWindowAttributes'函数将窗口设置为透明。该函数需要传入窗口句柄、透明颜色和透明度等参数。
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_COLORKEY);
  1. 使用'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);

通过以上步骤,就可以将普通窗口变成不规则形状的窗口。

C++ 实现不规则窗口:自定义形状窗口教程

原文地址: https://www.cveoy.top/t/topic/qpy7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录