0

我有一个带有背景图像的窗口,我想创建一个带有白色边框和半透明背景RGBA(255, 255, 255, 124)的面板(如.NET) ,所以背景中的图像可以是也可见。我应该为此使用STATIC控件还是子窗口?我知道为了设置窗口的RGBA颜色,我必须使用SetLayeredWindowAttributes,但我不知道这是否适用于STATIC控件。

通常使用什么类型的控件,我可以使用哪些WINAPI函数来设置边框粗细和颜色?谢谢

一些代码:

// Create the static control (inside the WM_CREATE of the parent window)
hPanel = CreateWindowEx(
    WS_EX_TRANSPARENT, 
    L"STATIC", 
    L"", 
    WS_CHILD | WS_VISIBLE | SS_WHITEFRAME, 
    10, 90, 
    200, 120, 
    hWnd, 
    (HMENU)IDC_PANEL, 
    hInstance, 
    NULL);

// Trying to set the alpha level
SetWindowLong(hPanel , GWL_EXSTYLE, 
    GetWindowLong(hPanel , GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hPanel , 0, (255 * 70) / 100, LWA_ALPHA);

// Changing the background color of the STATIC in WM_CTLCOLORSTATIC
case WM_CTLCOLORSTATIC:
    hStatic = (HDC)wParam;
    switch (GetDlgCtrlID((HWND)lParam)) {
        case IDC_PANEL:
            SetTextColor(hStatic, RGB(255, 255, 255));
            SetBkColor(hStatic, RGB(26, 127, 231));
        break;
        default:
            SetTextColor(hStatic, RGB(255, 255, 255));    
            SetBkMode (hStatic, TRANSPARENT);
    }
    return (LRESULT)GetStockObject(NULL_BRUSH);
    break;

所以,我用这段代码唯一得到的是一个透明的边框控件。我没有得到背景颜色和 alpha 效果。

4

0 回答 0