我正在使用C – (没有MFC或GDI +) ?
我想要的是将我的子窗口的不透明度设置为100(我的子窗口是STATIC
控件)。 我想知道这是否可能,如果是这样,有人请指出我正确的方向如何做到这一点。
这是我的设置:
我创建我的父窗口如下:
HWND hWnd; WNDCLASS wndCls_s; wndCls_s.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wndCls_s.lpfnWndProc = MainWndProc; wndCls_s.cbClsExtra = 0; wndCls_s.cbWndExtra = 0; wndCls_s.hInstance = hInstance; wndCls_s.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_BSN_64)); wndCls_s.hCursor = LoadCursor(NULL, IDC_ARROW); wndCls_s.hbrBackground = CreateSolidBrush(RGB(0, 0, 0)); wndCls_s.lpszMenuName = NULL; wndCls_s.lpszClassName = pszCName; if (RegisterClass(&wndCls_s) == 0) return EXIT_FAILURE; /* Creating Window */ hWnd = CreateWindow( pszCName, pszCName, WS_VISIBLE | WS_POPUP | WS_SYSMENU | WS_CLIPCHILDREN, 0, 0, WND_WIDTH, WND_HEIGHT, NULL, NULL, hInstance, NULL);
在我的MainWndProc
:
case WM_CREATE: { HWND hWndChild = CreateWindow( L"STATIC", (LPCTSTR) NULL, WS_CHILD | WS_VISIBLE, 10, 10, 110, 110, hWnd, (HMENU) (int) 10000, g_hInst, NULL); } break; case WM_CTLCOLORSTATIC: { COLORREF dwColor; dwColor = RGB(255, 0, 0); hDC = (HDC) wParam; //SetBkColor(hDC, dwColor); SetBkMode(hDC, TRANSPARENT); /* This is not going to work for child window SetWindowLong( hWnd, GWL_EXSTYLE, GetWindowLong((HWND)lParam, GWL_EXSTYLE) & ~WS_EX_LAYERED); SetLayeredWindowAttributes( (HWND)lParam, 0, 100, LWA_ALPHA); RedrawWindow((HWND)lParam, NULL, NULL, RDW_ERASE | RDW_INVALIDATE); */ if (g_hBrushRed == NULL) g_hBrushRed = CreateSolidBrush(dwColor); } return (INT_PTR)g_hBrushRed;
如果要为背景返回有效的画笔,为什么要使用TRANSPARENT
启用透明度? 您不需要SetBkMode
,然后控件将使用您的红色画笔。
以上就是c/c++开发分享Win32(GDI) – 设置静态控制的不透明度相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/559635.html