使用SetLayeredWindowAttributes实现窗口透明的过程,发现一个这样的怪问题,代码如下: if(bDrawingMode)
{
//使窗口只能用画笔绘图
SetWindowLong(m_hWnd, GWL_EXSTYLE, m_dwExStyle^WS_EX_LAYERED);
}
else
{
//使窗口有鼠标穿透功能,即可以操作屏幕
SetWindowLong(m_hWnd, GWL_EXSTYLE, m_dwExStyle | WS_EX_LAYERED | WS_EX_TRANSPARENT );
} BOOL bRet = FALSE; //(int)(nTransparent*2.55)
BYTE R = CDrawObject::m_maskBgColor.GetR();
BYTE G = CDrawObject::m_maskBgColor.GetG();
BYTE B = CDrawObject::m_maskBgColor.GetB();
bRet = CUser32DLL::GetInstance()->SetLayeredWindowAttributes(m_hWnd,  RGB(R, G, B), int(nTransparent*2.55), dwFlags); 当我把系统的颜色调成16位增强色的时候,透明虽然是透明的,但这时窗体还是鼠标穿透模式,如果把系统的颜色调成32真彩色的时候,则不仅是透明的,而且可以在该窗体上绘制图形。这是什么呢?