使用Layered Window遇到的一些问题及解决方法
2020-12-13 03:43
标签:style blog color 使用 问题 line 1. 使用Layered Window需要设置 WS_EX_LAYERED 属性 2. Layered Window不能作为Child Window 3. 它也不能包含子窗口,为什么呢,因为它收不到WM_PAINT消息,它上边的子窗口显示不了 4. 使用DrawText或者Graphics::DrawString,他们画出的字是透明的, 这个问题我不知道原因,但是解决方法很简单: 先将文字画到一个内存位图上,然后使用Bitblt的方式将此内存位图拷贝到目标dc即可 5. SetWindowRgn 方法失效了!!! 这个问题同样想不明白,但是解决方法也很简单: LayeredWindow有一个性质,透明的部分,鼠标可以穿透,即接收不到鼠标消息 利用这个特性我们可以很容易制作异形窗口: 1 // 先保存旧的Clip区域 使用Layered Window遇到的一些问题及解决方法,搜素材,soscw.com 使用Layered Window遇到的一些问题及解决方法 标签:style blog color 使用 问题 line 原文地址:http://www.cnblogs.com/hdtianfu/p/3816378.html
3 ::GetClipBox(hDC, &rcClip);
4 HRGN hOldRgn = ::CreateRectRgnIndirect(&rcClip);
5
6 // 先获取需要显示的区域
7 HRGN rgn = getShowRgn();
8
9 // 选择绘图的区域
10 ::ExtSelectClipRgn(hDC, rgn, RGN_AND);
11
12 // 好了,开始画图吧,这里只绘制rgn表示的区域,其他没有绘制的区域保持透明,因此可以利用这个特性来制作圆角、箭头等效果
13 doPaint();
14
15 // 画完之后,恢复Clip区域
16 ::SelectClipRgn(hDC, hOldRgn);
17
18 // 最后释放rgn
19 ::DeleteRgn(rgn);
文章标题:使用Layered Window遇到的一些问题及解决方法
文章链接:http://soscw.com/essay/28156.html