WinCE下的透明窗口,请教各位!
直接开说吧.
首先,有一个大窗口做背景.我在上面放了个按钮.点击按钮后,小窗口会弹出来.
如下图:
[img=http://my.csdn.net/my/album/detail/989726][/img]
绘图函数OnPaint().中是这样的:
CPaintDC dc(this);
CDC memDC;
CBitmap bmBkgnd;
bmBkgnd.Attach( m_hBmpBg );
memDC.CreateCompatibleDC(&dc);
CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd );
BITMAP bm;
bmBkgnd.GetObject(sizeof(bm), &bm);
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY );
memDC.SelectObject( pOldBm );
bmBkgnd.Detach();
后来,我在网上搜了下资料.把小窗口背景图片的过滤色给去掉了.
用
TransparentBlt(dc.m_hDC, 0, 0, bm.bmWidth, bm.bmHeight,
memDC, 0, 0, bm.bmWidth, bm.bmHeight, RGB(255, 0, 255));
替换掉了上面的:
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY );
一句.
但是变成下面这样子了.
[img=http://my.csdn.net/my/album/detail/1154689#][/img]
但是我需要把小窗口四个角的那块灰色的也要去掉.应该怎么做.先行谢过大家!
[解决办法]
如果使用 Dialog 来显示,是不可能使用非矩形的窗体的,包括想做四角透明的效果一样是不可能的。
只有使用 overlay 来显示,才能做到 LZ 想要的效果。
[解决办法]
CE下没法按widows下的方法做透明窗口
[解决办法]
必须使用Alpha Blend
[解决办法]
使用AlphaBlend,可以实现透明。当然需要系统增加组件:SYSGEN_GDI_ALPHABLEND。