У меня есть окно с фоновым изображением, и я хочу создать панель (как в .NET) с белой рамкой и полупрозрачным фоном RGBA (255, 255, 255, 124), поэтому изображение на заднем плане также может быть видно. Должен ли я использовать 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;
Итак, единственное, что я получаю с этим кодом — это прозрачный элемент управления с границами. Я не понимаю цвет фона и альфа-эффект.
Задача ещё не решена.
Других решений пока нет …