我正在寻找一种方法将自定义控件绘制到对话框的客户端和非客户端区域。或多或少白色区域
我使用了DwmExtendFrameIntoClientArea
,我通过使用
MARGINS mar = {-1, -1, -1, -1};
DwmExtendFrameIntoClientArea ( hWnd, &mar );
但现在我用透明背景设置的每个控件
SetBkMode(hdc, TRANSPARENT);
将他们的颜色与航空材料混合在一起(同样的问题you can see here)。
控件是否有一种方法可以保留正确的颜色并避免与背景混合?
答案 0 :(得分:1)
这是因为窗口将黑色处理为透明度键。
您只需要设置另一个值:
SetWindowLong(hWnd,GWL_EXSTYLE,WS_EX_LAYERED);
// Choose a colour that you will not use in the program, eg RGB(200,201,202)
SetLayeredWindowAttributes(hWnd,RGB(200,201,202),0,LWA_COLORKEY);