首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

WinCE下的透明窗口,

2012-06-02 
WinCE下的透明窗口,请教各位!直接开说吧.首先,有一个大窗口做背景.我在上面放了个按钮.点击按钮后,小窗口

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。

热点排行